perm filename NOTICE[UP,DOC]174 blob sn#829292 filedate 1986-11-30 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00307 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00025 00002	*1969	DDT	WFW
C00032 00003	*JUL 1971	WHO	DCS
C00034 00004	*1 Jan 1972	SAIL Statement Counter Profile	RES
C00035 00005	*1 JAN 1972	DO	RPH
C00036 00006	*1 JAN 1972	DMAN	REG
C00037 00007	*1 JAN 1972	SPOOLER	REG
C00038 00008	*1 JAN 1972	RSL SL WHAMS BAMS ETC	JHS
C00039 00009	*1 JAN 1972	Keyboard Commands	LES
C00040 00010	*FEB 1972	NEW WHO	DCS
C00043 00011	*25 Feb 1972	NOTICEs	LES
C00045 00012	*29 Feb 1972	"Sticky PPN's" (RPG, COMPILE)	DCS
C00046 00013	*2 Mar 1972	CREF Default Listing Device	DCS
C00047 00014	*14 Mar 1972	TV "." and <esc>I Features	DCS
C00048 00015	*23 Mar 1972	TV for III	DCS
C00049 00016	*MAR 1972	LOGOUT	REG
C00051 00017	*30 APR 1972	FAIL	FW
C00052 00018	*3 JUN 1972	RAID	DCS
C00059 00019	*JUN 1972	RPG and LOADER	DCS
C00061 00020	*4 JUN 1972	NEW DISPLAY EDITOR	SRS
C00062 00021	*6 JUN 1972	PUB MANUAL	TES
C00064 00022	*14 June 1972	VIDEO SWITCH DOCUMENTATION	LES
C00065 00023	*7 July 1972	DOCUMENTATION FILES	LES
C00066 00024	*23 JULY 1972	KLOG	RHT
C00067 00025	*24 Jul 1972	SAIL	DCS,RHT,JRL
C00071 00026	*25 Jul 1972	SPOOLER	REG
C00072 00027	*1 Aug 1972	FORTRAN	REG
C00073 00028	*9 Aug 1972	DATA DISK	FW
C00075 00029	*16 Aug 1972	AP NEWS (APE, HOT)	ME
C00077 00030	*16 AUG 1972	SAIL MATRIX ROUTINES PACKAGE	SHK
C00079 00031	*30 Aug 1972	UUO	SHK
C00080 00032	*4 Sept 1972	AP NEWS (APE, HOT)	ME
C00081 00033	*4 Sept 1972	FILDMP	RPH
C00082 00034	*4 Sept 1972	NEW SAIL	RHT
C00083 00035	*22 Sept 1972	NEW SAIL	RHT,JRL,KVL
C00086 00036	*22 Sept 1972	Upper Segment RAID and DDT	TVR
C00087 00037	*22 Sept 1972	AP NEWS (APE)	ME
C00088 00038	*12 Oct 1972	FAIL	TVR
C00089 00039	*21 Oct 1972	SAIL	JRL,RHT,KVL
C00092 00040	*3 Nov 1972	USER INTERRUPTS	FW
C00093 00041	*3 Nov 1972	VIDEO SWITCH	FW
C00094 00042	*8 Nov 1972	DUMPS	REG
C00095 00043	*8 Nov 1972	PROTECTION	REG
C00096 00044	*11 Nov 1972	SYSTEM	REG
C00097 00045	*26 Nov 1972	FTP	DCS
C00099 00046	*26 Nov 1972	MLISP2	DAV
C00102 00047	*3 Dec 1972	SAIL	RHT
C00105 00048	*12 Dec 1972	AP NEWS (APE)	ME
C00107 00049	*12 DEC 1972	PUB	TES
C00109 00050	*9 Jan 1973	NEWS	LES
C00111 00051	*23 Jan 1973	AP NEWS (APE)	ME
C00114 00052	*28 Jan 1973	SAIL	JRL
C00116 00053	*22 Feb 1973	FAIL	FW
C00118 00054	*25 FEB 1973	COPY	RPH
C00119 00055	*4 MARCH 1973	MLISP	DAV
C00121 00056	*5 MARCH 1973	PUB	TES
C00127 00057	*9 MARCH 1973	MLISP2	DAV
C00132 00058	*16 March 1973	FREEFOROL processes Text Macros	LES
C00133 00059	*21 March 1973	WHERE Command	TVR
C00134 00060	*27 March 1973	TV ↔ E switching	DCS and FW
C00135 00061	*4 April 1973	TALKER, FTP	DCS
C00136 00062	*5 April 1973	PUB	TES
C00137 00063	*8 April 1973	APE, AUTOMATIC NOTIFICATION	ME
C00139 00064	*9 April 1973	APE, AUTOMATIC NOTIFICATION	ME
C00143 00065	*11 APR 1973	INFO	REM
C00144 00066	*9 May 1973	FAIL	FW
C00148 00067	*19 MAY 1973	MLISP2	DAV
C00149 00068	*22 May 1973	MAIL SEND REMIND CANCEL	BH
C00150 00069	*1 JUNE 1973	MLISP2	DAV
C00152 00070	*2 Jun 1973	MAIL SEND REMIND CANCEL LATER GRIPE	BH
C00155 00071	*4 Jun 1973	MAIL SEND REMIND LATER CANCEL GRIPE	BH
C00156 00072	*19 June 1973	WHOLINE TIME DAYTIME ESCAPE X ESCAPE Q	ME
C00164 00073	*2 July 1973	NOTICEs	ME
C00165 00074	*12 July 1973	SYSTEM NEWS PROGRAM	ME
C00167 00075	*12 July 1973	MAIL SEND REMIND RCV	BH
C00170 00076	*23 JULY 1973	SAIL	RHT JRL HJS KVL
C00181 00077	*1 June 1974	FINGER	LES
C00183 00078	*7 Aug 1973	SEND MAIL	BH
C00186 00079	*13 Aug 1973	RCV	BH
C00188 00080	*14 Aug 1973	LOADER and RPG	TVR
C00191 00081	*14 Aug 1973	FIND	DCS
C00194 00082	*14 Aug 1973	PUB XGPUB	RKJ
C00198 00083	*5 SEPT 1973	NETWORK NETWRK TALKER TELNET FTP	RPH
C00199 00084	*5 Sept 1973	FONT conversion for XGP (FCOPY)	TVR
C00202 00085	*18 Sept 1973	PUB Command in RPG	FW
C00203 00086	*25 Sept 1973	PUB Changes for XGP	TES
C00205 00087	*28 Sept 1973	FILES command	ME
C00209 00088	*29 Oct 1973	RAID	FW
C00212 00089	*31 Oct 1973	LOADER	FW
C00214 00090	*2 Nov 1973	EDFONT (XGP)	TVR
C00216 00091	*19 Nov 1973	XGP (Underline)	REG
C00217 00092	*29 Nov 1973	E	FW
C00220 00093	*3 Dec 1973	LISP	RWW
C00222 00094	*17 DEC 1973	COPY	RPH
C00223 00095	*8 JAN 1974	NEWS	LES
C00224 00096	*20 Jan 1974	EDFONT 	TVR
C00225 00097	*16 MAR 1974	BOOK MODE (/B) in E (BOOK command)	ME
C00231 00098	*8 APR 1974	FAIL changes	REG
C00234 00099	*14 Apr 1974	Font Sampler	TVR
C00237 00100	*22 APR 1974	FAIL changes (continued)	REG
C00238 00101	*22 MAY 1974	FILE PROTECTION DSKPRO	REG
C00244 00102	*24 May 1974	REMOTE LOGINS	BH
C00246 00103	*26 May 1974	News Service--NS	ME
C00249 00104	*28 May 1974	News Service--NS--HOT	ME
C00250 00105	*1 JUN 1974	NETWORK MAIL	BH
C00257 00106	*4 JUN 1974	NETWORK MAIL QUEUE	BH
C00260 00107	*6 JUN 1974	PTYJOB	JBR
C00261 00108	*7 JUN 1974	TELNET,PTYJOB,DIAL	JBR
C00262 00109	*14 June 1974	News Service--NS	ME
C00270 00110	*28 July 1974	FCOPY - Font conversion	TVR
C00272 00111	*31 July 1974	News Service--NS	ME
C00277 00112	*16 Aug 1974	VODER Service - Voice Synthesizer	REG
C00279 00113	*19 Aug 1974	TELNET, PTYJOB, DIAL	JBR
C00280 00114	*21 Aug 1974	MAIL APPEND	BH
C00282 00115	*4 Sept 1974	News Service--NS--HOT	ME
C00286 00116	*5 Sept 1974	RCV SOS mode	BH
C00289 00117	*13 Sept 1974	News Service--HOT	ME
C00292 00118	*22 Sept 1974	INIT Login option	SGK
C00293 00119	*27 Sept 1974	Dired	SGK
C00294 00120	*29 Sept 1974	Subject Line in Network Mail	BH
C00297 00121	*4 Oct 1974	MAIL to random files	BH
C00299 00122	*8 Oct 1974	News Service--NS	ME
C00302 00123	*11 Oct 1974	MAIL--APPEND TO FILE	BH
C00304 00124	*14 Oct 1974	MAIL - E SWAP FEATURE	BH
C00306 00125	*14 Oct 1974	SAIL -- SAISG8 version.	RHT
C00314 00126	*25 Oct 1974	MAIL RCV	BH
C00316 00127	*30 Oct 1974	FAIL	REG
C00320 00128	*4 Nov 1974	PLAN EXPIRATION (MAIL)	BH
C00321 00129	*5 Nov 1974	ILISP (IL,actually) IMPROVEMENTS	DWP
C00329 00130	*20 Nov 1974	DATE75 DATE	REG
C00330 00131	*24 Nov 1974	RCV	BH
C00333 00132	*24 Nov 1974	MAIL EVENT	BH
C00336 00133	*26 Nov 1974	Keyword Indexing: INDEX.  Text Retrieval: NS.	ME
C00338 00134	*26 Nov 1974	EVENT RCV	BH
C00341 00135	*12 Dec 1974	KEYBOARD MAPPING	BH
C00345 00136	*4 Dec 1974	NEW TELEPHONE LINES & BUSINESS CARDS	LES
C00347 00137	*9 Jan 1975	NETWORK MAIL CC LINE	BH
C00349 00138	*26 Jan 1975	RCV: GRIPE AND NAP CHANGES	BH
C00351 00139	*18 Feb 1975	MAIL/Q OPTION FOR ARPA MAIL	BH
C00353 00140	*9 Mar 1975	Copy ∂ feature improved.	SGK
C00354 00141	*16 Mar 1975	Raid, Nraid, Nnraid	JBR
C00357 00142	*20 Mar 1975	FTP	BH
C00370 00143	*31 Mar 1975	COPY comments, page lists	ME
C00371 00144	*9 Apr 1975	Telephone Experiment	SGK
C00373 00145	*9 Apr 1975	FTP	BH
C00376 00146	*19 Apr 1975	FTP server	BH
C00379 00147	*23 Apr 1975	FTP multiple RETR/STOR	BH
C00386 00148	*30 Apr 1975	FTP	BH
C00387 00149	*24 May 1975	NETWORK SEND (MAIL) FTPS	BH
C00389 00150	*1 June 1975	WHO	ME
C00395 00151	*22 June 1975	WHO jobs to display and command files: *+-"@	ME
C00405 00152	*1 JUL 1975	VIDEO SWITCH MAPPING	BH
C00420 00153	*6 July 1975	WHO monitor command line	ME
C00423 00154	*13 July 1975	WHO monitor command line (TTYs), T F commands	ME
C00424 00155	*15 July 1975	COPY DIRECTORY switches.  "]" and "\".	ME
C00428 00156	*9 Aug 1975	FTP PICKUP MULTIPLE TRANSFER	BH
C00432 00157	*25 Aug 1975	FIND WITHIN	ME
C00436 00158	*1 Sept 1975	FIND MAIL FILES (∂)	ME
C00438 00159	*8 Sept 1975	COPY /NOFF	ME
C00440 00160	*22 Sept 1975	SAIL		JFR
C00442 00161	*27 Sept 1975	RAID POINT mode input	JBR
C00443 00162	*13 Oct 1975	FINGER	LES
C00447 00163	*25 Oct 1975	SNAIL (the new RPG)	MJC
C00460 00164	*26 Oct 1975	RAID	JBR
C00462 00165	*29 Oct 1975	SNAIL	MJC
C00467 00166	*30 Oct 1975	Bureaucracy: Computer time usage	LES
C00474 00167	*4 Nov 1975	Pub Update	LES
C00475 00168	*6 Nov 1975	PALX		JBR
C00476 00169	*11 Nov 1975	Phone Call Logging	LES
C00480 00170	*20 Nov 1975	RCV output to ETV-formatted files	ME
C00483 00171	*20 Nov 1975	ETV and extended files--directory extending/updating	ME
C00486 00172	*2 Dec 1975	MAIL EVENT PLAN	ME
C00494 00173	*4 Dec 1975	REMIND MAIL	ME
C00496 00174	*7 Dec 1975	Reference Register	LES
C00499 00175	*10 Dec 1975	MAIL /SUBJECT	ME
C00501 00176	*11 Jan 1976	RCV:NOMAIL OPTION	ME
C00502 00177	*15 Jan 1976	E: FILEHACKS, NEW COMMANDS FOR TTYS	ME
C00508 00178	*18 Jan 1976	SNAIL	MJC
C00509 00179	*3 Feb 1976	DO, BATCH/DO	ME
C00511 00180	*1 Mar 1976	Automatic beeping, ESC Z, BREAK Z, TTY BEEP	ME
C00515 00181	*31 Mar 1976	COPY DIRECTORY/UFDPRO SWITCH	ME
C00517 00182	*2 Apr 1976	SEND MESSAGES TTYMES NULMES	ME
C00520 00183	*1 Apr 1976	LOADER POLISH LINK-10		JFR
C00523 00184	*4 Apr 1976	FTP (LPPN and RPPN Commands)	BH
C00526 00185	*22 Apr 1976	PUB	RHT
C00528 00186	*27 Apr 1976	PUB	RHT
C00531 00187	*8 May 1976	PUB	RHT
C00533 00188	*23 May 1976	MAIL/-OUTGO  OUTGO.MSG	ME
C00534 00189	*27 June 1976	SNAIL	MJC
C00536 00190	*4 July 1976	SAIL FIX FLOAT KIFIX FIXR FLTR ADJSP	JFR
C00542 00191	*15 Aug 1976	Data Disc channel queueing, ESC CALL, BREAK CALL	EJG
C00546 00192	*28 Aug 1976	SAIL FORTRAN-10 INPUT of '0 CASE statement		JFR
C00550 00193	*8 Oct 1976	SNAIL	MJC
C00552 00194	*4 Dec 1976	SAIL LONG REAL CVEL LREALIN LREALSCAN	JFR
C00555 00195	*5 Dec 1976	BRK # W  Wholine for a given tty #	ME
C00559 00196	*10 Jan 1977	COPY /PAUSE switch	ME
C00562 00197	*20 Jan 1977	DM margins    ESC m <    ESC n >	ME
C00565 00198	*21 Jan 1977	Who	PMF
C00566 00199	*5 Mar 1977	Line editor -- partial activation	ME
C00570 00200	*24 Mar 1977	LOGIN options: FDM FDM128	ME
C00572 00201	*30 Mar 1977	ESC +  BRK +  ESC *  Incremental escapes	ME
C00574 00202	*2 Apr 1977	XGP file displaying	HPM
C00575 00203	*2 June 1977	SNAIL, tmpcor	MJC
C00576 00204	*6 Nov 1977	Privacy, spying, and (MAGIC) mapping	ME
C00577 00205	*13 Nov 1977	FINGER	LES
C00582 00206	*19 Nov 1977	SPOOL	MRC
C00584 00207	*26 Nov 1977	BATCH (MAIL) time limits	BH
C00586 00208	*19 Nov 1977	LOGIN	MRC
C00589 00209	*27 Nov 1977	FTP one-line transfer	BH
C00593 00210	*30 Nov 1977	Responsible TTYs, Mapped beeps, Privacy 	ME
C00597 00211	*30 Nov 1977	New/modified escape commands	ME
C00603 00212	*30 Nov 1977	FTP one-liner passwords	BH
C00604 00213	*2 Dec 1977	FTP one-liner ACCT and OPTION.TXT features	BH
C00609 00214	*6 Dec 1977	LOGIN	MRC
C00611 00215	*17 Dec 1977	WM (WHOMAP)	ME
C00612 00216	*2 Jan 1978	MAIL FORWARDING (also FTPS)	BH
C00623 00217	*2 Jan 1978	XGP spooler breaking up (suspending) listings	ME
C00625 00218	*3 Jan 1978	.XGP files /USETI & /FONT partial font loading	ME
C00631 00219	*6 Jan 1978	Spoolers: /QSPOOL switch	ME
C00634 00220	*6 Jan 1978	SYSTEM UNPROTECT TALK LINK TTY GAG	BH
C00638 00221	*16 Jan 1978	FORTRAN LIB40 SINE/COSINE BUG FIX DSIN/DCOS	EJG
C00640 00222	*18 Jan 1978	Licking FINGER	Les
C00646 00223	*21 Jan 1978	Home Terminals	LES
C00649 00224	*24 Jan 1978	AUDIO, DAYLIGHT TIME, PTYS	BH,ME,JBR
C00652 00225	*24 Jan 1978	XGP spooler suspending on dead XGP/KA	ME
C00654 00226	*27 Jan 1978	NS output files 	ME
C00655 00227	*30 Jan 1978	PRIVATE MAIL	BH
C00657 00228	*2 Feb 1978	XGP spooler: unspooling 	ME
C00658 00229	*2 Feb 1978	LPT and XGP spoolers: accounting	ME
C00660 00230	*2 Feb 1978	XGP spooler suspended listings	ME
C00670 00231	*2 Apr 1978	mail returns dead letters to sender	BH
C00672 00232	*3 Apr 1978	filehacks and programmer names	ME
C00673 00233	*9 Apr 1978	New system 8.70/I	BH,ME,MRC
C00680 00234	*15 Apr 1978	new system 8.70/J	BH,ME
C00683 00235	*16 Apr 1978	New system WAITS 8.70/L	BH,ME,MRC
C00685 00236	*23 Apr 1978	QSPOOL/DISPLAY/TYPE	ME
C00689 00237	*27 Apr 1978	NUL: device	MRC
C00690 00238	*14 May 1978	Page numbers within .XGP files	ME
C00692 00239	*28 May 1978	↑←L, ↑←X, ↑←Z, RPGSAV option	BH
C00695 00240	*8 Jun 1978	Idle time in wholine	ME
C00696 00241	*11 Jun 1978	IOWQ wholine status	ME
C00698 00242	*8 Aug 1978	WAITS 8.72/J ATTACH WHOline ALIAS	BH
C00700 00243	*11 Aug 1978	Display Use Policy	LES
C00703 00244	*14 Aug 1978	New BBOARD file 	BH
C00707 00245	*15 Aug 1978	DIRED (all new)		DON,RSP
C00710 00246	*22 Sept 1978	DIRED		DON,RSP
C00712 00247	*26 Sept 1978	DART PUMPKIN OFFLINE RESTORE	BH
C00716 00248	*19 Oct 1978	MacLisp Newio	RPG
C00718 00249	*9 Nov 1978	UNPUMPKIN PLIST DART	BH
C00720 00250	*16 Nov 1978	Autologout LIV	BH
C00722 00251	*20 Nov 1978	Finger	LES
C00723 00252	*29 Nov 1978	COPY/UIGNORE ignoring read-protected UFDs	ME
C00724 00253	*1 Dec 1978	autologout LIV DET	BH
C00727 00254	*6 Dec 1978	autologout	BH
C00730 00255	*13 Dec 1978	GRIPE command (MAIL)	BH
C00733 00256	*29 Dec 1978	WAITS 9.01, P2 system, new Ampex memory, XGP, reloading	BH,ME
C00738 00257	*24 Jan 1979	DDT, UEDDT and special activation mode ($M-5)	ME
C00741 00258	*12 Feb 1979	XGP and LPT spoolers' priorities, QSPOOL	ME
C00746 00259	*15 Feb 1979	TTY NO DELETE, 177s vs. ↑H (010) for Backspace	ME
C00748 00260	*20 Feb 1979	extended display service, DMs	ME
C00757 00261	*31 Mar 1979	FIND	DON
C00761 00262	*1 Apr 1979	MAIL BATCH /DO	BH
C00764 00263	*17 May 1979	Spooler deliveries to Jacks Hall	ME
C00769 00264	*18 May 1979	SNAIL changes	MJC
C00771 00265	*28 May 1979	WHO	MRC
C00773 00266	*7 Jun 1979	DIR/REF days-referenced percentage (COPY)	ME
C00775 00267	*10 Jul 1979	DART REAP UNREAP	BH
C00778 00268	*12 Aug 1979	TELNET server		MRC
C00781 00269	*9 Dec 1979	WHO holding command	ME
C00783 00270	*7 Apr 1980	XGP /PLIMIT switch improves priority	ME
C00787 00271	*27 Apr 1980	BBOARD, GRIPES, JOBS, CRITIC, CKSUM	DON
C00789 00272	*5 May 1980	SEND LOCAL, SEND ARPA, SEND *	DON
C00791 00273	*9 May 1980	"Negative Service Level" NSL	ME
C00793 00274	*2 Jun 1980	BUNDLE	DON
C00794 00275	*24 Jun 1980 	Times Roman Fonts 	JP
C00796 00276	*05 Aug 1980	DIAL	ROB
C00797 00277	*14 Aug 1980	MAIL	BH
C00802 00278	*11 Nov 1980	BINCOM shows XORs	ROB
C00803 00279	*20 Dec 1980	MAIL REPLY switch	DON
C00805 00280	*2 Jan 1981	Head crash details	ME
C00806 00281	*25 Feb 1981	RAID	ME
C00811 00282	*13 Sep 1981	TALKing to SAIL from an Alto	WIN
C00813 00283	*19 Sep 1981	disk allocations in blocks (tracks)	ME
C00814 00284	*21 Jun 1982	certain SAIL charges reduced	ME
C00816 00285	*23 Jul 1982	use of TACs	ME
C00818 00286	*5 Aug 1982	PER,ACT files	ME
C00819 00287	*11 Nov 1982	readable backup magtapes	ME
C00820 00288	*13 Sep 1983	new RP07 disks	REG  
C00822 00289	*14 Feb 1984	Changes to CKSUM	DON
C00829 00290	*27 Feb 1984	Dover charges		JJW
C00830 00291	*14 May 1984	online dialing prefixes (dial codes) 	ARK
C00832 00292	*28 May 1984	REPLY macro in EINIT.CMD[1,3]	JJW
C00835 00293	*30 May 1984	video synthesizer, XGPSYN	ME
C00836 00294	*2 Sep 1984	New CSD-CF rates	ARK
C00849 00295	*30 Jan 1985	Information files	JJW
C00851 00296	*5 Apr 1985	new SPSUB in LIB40	ME
C00852 00297	*16 May 1985	SAIL clock way ahead	ME,JJW
C00857 00298	*30 Aug 1985	RP07 filesystem loss	ME,JJW
C00866 00299	*7 Oct 1985	New CSD-CF rates	JJW
C00867 00300	*22 Oct 1985	another RP07 filesystem loss	ME,JJW
C00872 00301	*8 Nov 1985	yet another RP07 filesystem loss	ME,JJW
C00874 00302	*6 Dec 1985	PUB can now make Press files	ME,JLG
C00875 00303	*25 Mar 1986	yet another new RP07 filesystem loss	ME,JJW
C00877 00304	*6 May 1986	Network host names	ME,JJW
C00881 00305	*12 Aug 1986	Bulletin board files	ME
C00883 00306	*11 Nov 1986	Bulletin board purging	RTC
C00886 00307	*27 Nov 1986	WAITS/ASCII character translation	JJW
C00890 ENDMK
C⊗;
*1969	DDT	WFW
 The following changes have been made to DDT:

 l.  Halfword printout is now of the form  A,,B  instead
     of  (A)B.  Either form may be used on input.  The difference
     is that  A,,B  truncates  A to 18  bits before 
     swapping halves while  (A)B  does not.

 2.  $U is a new output mode.  It is the same as $A$H.
 3.  $F mode will now print normalized floating permit
     numbers as decimal integers.  This means that
     FORTRAN users may, in general, use $F to look at
     all variables and they will be printed correctly 
     either fixed or floating.

 4.  If the address of a string of ASCIZ text is placed
     in $nB+3, then whenever breakpoint  n  is reached,
     DDT will act as if the characters in the string were
     being read from the teletype.  If you are preparing 
     such a string in advance use either  $ or ≠ (≠33 octal)
     for altmode.

 5.  If a  bytepointer to an  asciz  string is placed in
     $M-l, DDT will act as if the characters in the string
     are being read from the teletype.

 6.  $$7" <delimiter> characters <delimiter> will act just
     like an  asciz   statement in MACRO or FAIL,i.e.,
     more than one word will be filled with  asciz for 
     the characters if necessary.  $$" will have a similar
     effect but with sixbit.

 7.  Typing <number>$$P will cause DDT to do an automatic
     proceed  <number>  times instead of forever.

 8.  When printing in  $$  mode, no word will be printed
     out as an I/O instruction (COND, DATAO, CONI, etc.)
     unless the device number is in a special table.  The
     table is  10  words long and is in $I-1, $I-2, etc.
     Simply put device number here to have the appropriate I/O
     instructions printed.

 9.  If an address is placed in  $M-2  then for each character
     DDT wishes to output, a pushj 1,@$M-2 will be executed. 
     This allows output to be redirected to some device 
     other than the TTY.  The character is in register 5.  The
     routine should preserve all AC's and end with a POPJ l,.

10.  In byte mode output ($<number>0), if a size of 0
     is specified, DDT will use a special mark in $M+2.
     The boundry between 1 and 0 bits specifies the size
     of the bytes.  For example, a word containing

		11111111111 00000000000 11100010110001

     would print 2 . 11 bit bytes, 2 3 bit bytes, 2 1 bit
     bytes, a 2 bit bytes, a 3 bit byte, and a 1 bit byte.

11.  Bytes may be input of $<number>%.  This should be
     followed by a string of unsigned octal numbers
     separated by common and terminated by an altmode.  The 
     number of bytes in a word is not integal the last
     byte is treated as if the word were larger 
     (bit number greater than 35).  This makes input compatible
     with output.  A size of  O  uses the mark in $M+2
     as above.

12.  It is now possible to print flag words and  T  type
     instruction (TRUN, TLNN, etc.) with suitable names
     for the bit involved.  In $M+3 a pointer of the following
     form is placed:

				_______
				|            |
    _______      	|             |
$M+3 |  L1 | T0  |		| Table 0    | 
				|            |
				_______
	
				
				_______
				|            |
				| Table 1    |
				|            |
				_______

				_______
				|	     |                
				| Table 2    |
				|	     |                
				_______
     As many tables as desired may be included.  The pointer
     to the last table should have 0 in the left half. Each
     table contains 36 words.  The  nth  word contains the
     RADIX50 for the name of bit n.  $<number>J  mode will
     cause a word to be printed out using the bit names in
     table number.  If an entry for a bit in 0, the numeric
     value will be printed.  A typical word might look like

              foo! baz! 123,, fool! garp! 2

     $J means $0J.  $nL causes the left half to be
     printed in symbolic and the right half to be printed in
	↑STODAT:
     bit mode, using the names of the bits as if they appeared
     in the left half. $<number>V prints the left half in symbolic
     and the right half in bit mode.

13.  You can now transfer to what is pointed to by the left half
     of a word in the same manner as you transfer using <tab>.
     The command is <control>] (≥ on displays).

*JUL 1971	WHO	DCS
 DATA-DISK ONLY 
  TYPING `S' DISPLAYS JOBS, SYSTEM STATS, NON-DISK DEVICES.
  TYPING `R' DISPLAYS JOBS, STATS, DSK-AND NON-DSK DEVICES
  TYPING `F' DISPLAYS STATS AND DEVICES ONLY

 1. WHO times out after 2 minutes, logged in or not.
 2. Doesn't run in monitor mode any more -- always in command loop.
 3. REEnter feature removed.
 4. Commands are single-character, INCHRS replaces INCHSL.
 5. New commands:
    a) {<digit>}↓ moves the "window" down <digit> half-screens.  <digit>=1 def.
    b) {<digit>}↑ moves window up <digit> half-screens.  Can't move up
	beyond first possible line.
    c) E moves the page printer down, draws one more picture, then exits
	(stopping spacewar) without clearing screen.
    d) Anything else clears the screen, stops spacewar, then exits.
 6. If you type <call>, the spacewar module blows up in about 6 seconds.
    This will become more civilized if the system is modified to help.

*1 Jan 1972	SAIL Statement Counter Profile	RES

To find out how to get SAIL to give you execution frequency data for
pieces of your program, list NEWMAN[S,AIL].
*1 JAN 1972	DO	RPH
Manual is in DO.RPH[S,DOC].
*1 JAN 1972	DMAN	REG
Dectape manager (PDP-10 format) -- see DMAN.REG[S,DOC].
*1 JAN 1972	SPOOLER	REG
See SPOOL.DOC[S,DOC].
*1 JAN 1972	RSL SL WHAMS BAMS ETC	JHS
Service Level Reservation System -- see RSL[S,DOC]
*1 JAN 1972	Keyboard Commands	LES
To get a summary of line editor  and  other  Monitor  commands,  list
KEY.LES[S,DOC).
*FEB 1972	NEW WHO	DCS
As of 12-9-71:

1. WHO  will  run for about two minutes, then quit.  You can  reset
   this time by issuing commands (see below).

2. Typing <call> does not stop spacewar jobs.  However, after about
   6 seconds of operation after a <call>, the spacewar portion of
   WHO will bomb out (PC EXCEEDS MEM BOUNDS AT 377777).  This will
   be made cleaner if the system types give me some help.

3. WHO commands are now single-character commands.  WHO will not wait
   for a carriage return before executing one.

4. Previously, many lines of the WHO page were lost below the bottom
  of the screen.  WHO now provides a "windowing" feature.   Type  "↑"
  to  move  the  text  up,  so  that the line which did appear at the
  center of the screen now appears at the top.  This reveals  several
  new  lines  at  the  bottom.  A digit preceding the "↑" serves as a
  repeat factor.
 
5. The "↓" command, with optional repeat factor, moves the text down
   by a half-screenful, unless the first line already is displayed.

6. The "E" command causes WHO to quit.  However, the last-drawn screen
   will not be cleared.  So you can look at it.

7. Any other character will cause WHO to clear the screen (revealing
   your old page printer), then quit.
*25 Feb 1972	NOTICEs	LES

This file, kept in NOTICE[UP,DOC], is intended to function as a computerized
bulletin board.  System programmers and CUSP file contributors are invited to
disseminate information concerning new programs and system features by adding
notices to this file.  The format is arbitrary, except that the first line (and
only the first line) should begin with a "*" and should contain three fields in
the form

 *<date><TAB><subject><TAB><programmer initials>

In the date field, the year, month and day may be given in any order and the
year may be abbreviated to 2 digits, but the month must be given as 3 or more
letters.

The <subject> and <programmer initials> fields can be arbitrary strings (without
any CRs or LFs), which are searched by the system NEWS program in order to find
(at least) the strings typed by the user to the program.
*29 Feb 1972	"Sticky PPN's" (RPG, COMPILE)	DCS

   A PPN specification [P,PN] appearing before a file name in an
RPG command string will be used for all subsequent files which
do not specify a PPN explicitly.  This default remains in effect
until another "sticky PPN" is specified.
   As an example, if I am running under [AIL,DCS]:

    COMPILE SAIL=HEAD+DB+[S,AIL]SAIL+SYM+PARSE+PROD[AIL,DCS]+EXPR

would write the output on [AIL,DCS], get HEAD,DB, and PROD from
[AIL,DCS], and get SAIL, SYM, PARSE, and EXPR from [S,AIL].
*2 Mar 1972	CREF Default Listing Device	DCS

The CREF default listing device has been changed from LPT to DSK.
This change is not made in RPG mode (so that the CREF system
command will still go directly to LPT).
*14 Mar 1972	TV "." and <esc>I Features	DCS

Typing "⊗." (see TVED.DCS[UP,DOC] for notation) will cause the current
page to become a permanent part of the file (like "W" in SOS).  CANCEL
will henceforth bring back this version, not the old one.

To interrupt a "FIND" search prematurely, type <esc>I.  This replaces
the "\<crlf>" method.
*23 Mar 1972	TV for III	DCS
The TV editor (though still officially unsupported) will now run on
both Data-Disk and III.  In fact, you can transfer (by detach/attach)
from one to the other in mid-edit!
*MAR 1972	LOGOUT	REG
Recent changes to logout command.

	The logout command is used to terminate a job that was created
by Login, Fork, or Cfork commands.  The usual form of the command is
K or KJOB, typed at monitor level, followed by a carriage return.

	A new command is called KAT, which combines the features of the
K command and the ATtach command.  KAT requires the job number of the
job to which you want to attach.  As in the Attach command, if you
are attaching to a job with a different PPN than the job you are leaving,
you must supply the ppn of the job to which you are attaching.

	Command Formats
	Note that curly backets { and } denote optional
arguments; pointy brackets < and > denote a symbolic item which  should
be replaced by some concrete instantiation of that item.

K or KJOB command:

K{JOB}{/<switch list>}

KA{TTACH} <job number> {[<project name>,<programmer name>{]}}{/<switch list>}

Each command line is terminated by a carriage return.

	The item <switch list> consists of any sequence of letters
chosen from the list below:
	THIS LIST HAS BEEN OMITTED BECAUSE I FORGOT THEM ALL.

For further confusion, consult R. Gorin.
*30 APR 1972	FAIL	FW
The double arrow character is no longer treated specially
within the comment portion of a line.  When not within a
comment, it is equivalent to a carriage-return, line-feed
pair.  Now, within comments, it prints as itself.
*3 JUN 1972	RAID	DCS
A new version of RAID is on the system.  Since it is compatible with
both Data-Disc and III consoles, I have put it on SYS: as both 
RAID.REL and TVRAID.REL.  Therefore /V, /1V, /H, /1H will all load
the same program.  Later, TVRAID will be phased out (of LOADER, RPG)
and the numeric argument to H and V switches will be ignored.
This version has been tested fairly carefully.  But report any
problems you have to DCS, anyway.  The old files are saved as
RAID.RLO and TVRAID.RLO on [CSP,SYS].

The following things have been changed:
__ There are a few display changes; in particular, the arrow
   conventions of the Data-Disc RAID are now used everywhere.
__ Byte mode input will be displayed in byte mode.
__ Conditional breakpoints now work exactly as advertised.
__ Symbol←Expr, Symbol:, and Symbol<ctrl>K now work properly.
__ All opcodes work on input (incl. ANDCAM, ORCAB, etc.)

The following new features have been added:
__ There are three new entries to the dispatch table preceding
   DDT (JOBDDT → DDT) -- see RAID.ON[S,DOC] for the meaning of
   this table.  The three are:
	DDT-12:	→$RPTCNT	See below
	DDT-11: →$BGDDT		First word of DDT
	DDT-10: →DDTEND		Last word of DDT

__ This is "Version 1" of RAID.  The version is henceforth stored
   in the leftmost 13 bits of JOBDDT.  Since DDT and old RAID
   contain 0 here, you can tell which you have loaded.  This is for
   the benefit of programs which use new features -- they can
   try alternate methods if the Version isn't high enough.
__ If you insert a JSR $I in your program, you will effectively
   place a breakpoint at that location.  You can proceed via <ctrl>P.
   DO NOT single-step or set a breakpoint on this instruction!
   $I is an INTERNAL symbol in RAID.  There is a pointer to it at
   DDT-6.
__ When you type <call>DDT<cr>, RAID will simulate a breakpoint at
   the address specified by JOBOPC.  You can proceed with <ctrl>P.
   Do not expect this to work if you enter DDT before running anything,
   or if your program jumps to DDT (unless it stores a reasonable
   address in JOBOPC first).
__ n<ctrl><meta>S, where n is a number, will execute instructions
   in multi-step mode, as it would if n were absent.  However, no
   change will be made in  the display until:
     1) n instructions have been executed (<ctrl>X'ed subr =1 instr.)
     2) RAID must pause to get instructions at a subroutine call.
     3) You interrupt the stepping by typing something, or a
	breakpoint is encountered.
   After you respond at a type (2) pause, again the display remains
   unchanged until one of the conditions occurs again.  If you
   responded <ctrl>S or <ctrl>X to the pause, the count will be
   exhausted before the display changes again -- barring type (3)
   events.  The remaining count, if any, is always available in 
    $RPTCNT.   This is useful for counting exact numbers of 
     executions in a given routine, etc.
__ Symbol<meta>K obliterates the Symbol.  Unlike <ctrl>K, which
   simply eliminates typout of the symbol, this also makes it
   undefined for typein.  If, for instance, you have two locations
   with the name NM1, do:
	NM2←NM1		Assigns a new name to one of them.
	NM1<meta>K	Deletes this symbol completely.
	NM1;		Reveals value of the other NM1.  Now
			NM2 refers to the first.
__ Macros:
   Address<ctrl>M<letter> defines <ctrl><meta><letter> as
   a macro.  When the macro is invoked, Address (it can be just
   an address or a byte pointer value) will be put in $M-1 (see
   RAID.ON[S,DOC].  This has the effect of evaluating the string
   at Address before evaluating any more keyboard input -- expanding
   the macro.  Be warned that many <ctrl><meta><letter> combinations
   already mean something -- use one you can do without (the macro
   takes precedence).
*JUN 1972	RPG and LOADER	DCS

  Added "Sticky PPN" feature: a PPN appearing without (before) a file
	name will be the default until overriden.  It reverts to system
	default each new command "line".  It can be temporarily overriden
	as usual by trailing PPN.
	Also the PREPARE command.

 NSAIL, OSAIL added as standard processors.  SAIL causes /Y to be
   issued to LOADER, OSAIL causes /1Y, NSAIL causes /2Y, allowing
   differentiation of Runtime systems.
 /V, /H issued for both Data-Disc and III; /1V, /1H obsolete.

LOADER 6-72
 /nY causes <SIXBIT /SAILOW/>+n to be used as lower file.  This allows
   for different versions.  RPG creates the right one.
 /nV, /nH behaves the same independent of the value of n.  RAID.REL is
   always chosen.
*4 JUN 1972	NEW DISPLAY EDITOR	SRS

there now exists a new display editor, called ED, available for
experimentation.  to run it, type
 RU ED[S,SRS]
when it starts up, there will be some documentation on the screen.
	ED is presently experimental, and improving.  Features
include:  editing several files at once, splitting screen between
several files or strings, faster than TV in some cases.
*6 JUN 1972	PUB MANUAL	TES

A new version of PUB was put up today with some obscure bugs fixed.
Indexes and headings now work well.  AFTER PAGE does not always
work, but AFTER TEXT is usually equivalent and does work.
If you must use old version, please tell me why! To use it, log in
as 12,TES and RUN PUB.

There is a new manual: SPOOL PUB.TES[S,DOC]/N/B   It is 80 PAGES long, so
if you don't plan to use PUB for a few months, it is advisable to
wait for the SAILON to be printed.  The new manual has an index
and a tutorial for beginners, plus appendices with (untested) examples.
To use PUB for simple purposes, only a portion of the manual needs to be
read.

*14 June 1972	VIDEO SWITCH DOCUMENTATION	LES
A  SAILON  describing  the   video   switch   hardware   resides   in
VDS.LES[S,DOC].  A description of keyboard commands and monitor calls
for controlling the switch and DD channel allocation are described in
VIDEO.LES[UP,DOC].  To  get  a  summary of the keyboard commands, say
"HELP DISPLAY" or "SPOOL KEY.LES[UP,DOC]".
*7 July 1972	DOCUMENTATION FILES	LES
Online documentation files are divided into several areas, as follows.
	[P,DOC] contains the compiled version of the lab phone
		directory and other lists of people.
	[UP,DOC] contains user program descriptions (informal).
	[S,DOC] contains SAILONs, which are more formal descriptions
		of programs and hardware.
	[AIM,DOC] contains A. I. Memos, which report research results.
	[BIB,DOC] contains bibliographies of films, theses, SAILONs, etc.
*23 JULY 1972	KLOG	RHT
The KLOG command allows you to switch areas in one line.  Semantically
it is LOGOUT, followed by LOGIN.  The syntax is:

KLOG {/<logout switch>} {ppn spec (as you would type to LOGIN)}

examples 

KLOG 1/RHT

KL/F 1|RHT

KL 
1,RHT
*24 Jul 1972	SAIL	DCS,RHT,JRL
LEAP news

	1. In the past global model users of LEAP were required
	   to have the statement:
		
		REQUIRE -1 NEW_ITEMS;
		
	   in order to inhibit the allocation of various tables
	   for the local leap model. This statement is no longer
	   required. Instead the decision to allocate the tables
	   will be made using the following criteria. The local model
	   tables will be allocated only if any of the programs loaded
	   together to form a single job contain any declared local
	   items ( that is, any items declared without the attribute
	   GLOBAL), or any of the programs contain  the statement:
		
		REQUIRE n NEW_ITEMS;

       	   where "n" is greater that 0.
	   NOTE: this means that all users of local model LEAP must now
	   "require" new_items if they are going to dynamically create
	   non-global items by using the function NEW.(previously an
	   implicit REQUIRE 60 NEW_ITEMS was contained in every program).


	2. LEAP tables are now allocated as part of the SAIL initialization
	   code rather than on the first call to any LEAP subroutine.
	   The tables will be allocated if any of the SAIL programs
	   loaded contain declared items, itemvars, sets, lists or calls
	   to LEAP. This change was made so that datums of items could
	   be utilized before the first call to LEAP.

	3. The type codes for items have been altered. The new codes
	   returned by the TYPEIT function are as follows:

			0 - item deleted or never allocated
			1 - no type (no datum for this item)
			2 - item is bracketed triple
			3 - string
			4 - real
			5 - integer
			6 - set
			7 - list
			8 - procedure
		       16 - string array
		       17 - real array
                       18 - integer array
		       19 - set array
		       20 - list array
		       21 - invalid (runtime has screwed something up)
 	   The very astute user will notice that the only changes are to
	   up the codes for arrays and invalid by 5.

	IMPORTANT NOTE:This unfortunately will necesitate the recompilation
	and reloading of any programs which use array items as the RUNTIME 
	routines also use these type codes.The standard
	compiler  SAIL on [1,3] will have these changes as of 23:59 WED,
	jul26. Therefore if any of your programs use array items you should
	recompile them starting Thurs jul 27. Foist all complaints onto
	Jim Low.
*25 Jul 1972	SPOOLER	REG
SPOOLER NEWS:
	The old spooler '*LIST*' has been removed  from  the  system.
Users of the spooling subroutines described in SPSUB.REG[UP,DOC] will
have to reload with the new libraray.

	The command SPOOLQ has been removed. Instead, use the command
QSPOOL.   This  has the advantage that the command can be abbreviated
to one letter and the SPOOL command to two letters.

	A new SPOOL command is planned. This will allow users to more
fully utilize features of the new spooler.
*1 Aug 1972	FORTRAN	REG
DEC FORTRAN version 25 and LIB40 version 31 have been put up.
Some of the bugs in the compiler / operating system have been
eliminated.
*9 Aug 1972	DATA DISK	FW
Two new features have been added to data disk DPYOUT:

1) Overlapped mode, enabled by bit 0 of header word 0.
   In this mode, a DPYOUT will return without waiting for
   the transfer to be completed (although it will wait
   for any previou transfer), enabling the program to
   continue running. Header+2 will be set nonzero during
   the transfer, and to zero after the transfer is complete,
   so testing this is convenient (which should be done before
   changing the buffer). A DPYOUT with a zero word count will
   wait for a previous transfer without initiating a new one.

2) Double field mode, useful for text output. This is enabled
   by bit 1 of header word 0 and will cause the buffer to be
   transferred twice, once on each field. Header+3 should specify
   the address of the line address command word, which should
   contain the low-order line address as the third command in
   the word. Bit 24 of this word will be set to the proper
   field on each transfer. This feature cannot be used if more
   than one low-order line address command is used.
*16 Aug 1972	AP NEWS (APE, HOT)	ME

We have a line from the Associated  Press  (AP)  over  which  we  get
national  and  international news.  The news that comes in gets filed
on the disk and saved for about 24 hours.

For use in reading the news, there are two programs on the system.

Type "R HOT" to have the news typed on your console as it comes in.

Type "R APE" to be able to selectively read the news that is on file.
The  stories  are catagorized by keywords; to read the news, you type
to APE whatever keywords you want to read about.  To  get  help  when
you are running APE, type "?" and carriage return at any point. For a
list of the keywords, see the file WORDS.SRT[AP,SYS].

For further information, see the file APE.ME[S,DOC].
*16 AUG 1972	SAIL MATRIX ROUTINES PACKAGE	SHK

Following Matrix Routines Now Available:

1) Real Matrix Multiplication Routine
	Multiplies two n-dimensional matrices (2-dimensional arrays)
	(size  m x n by n x p  to get a  m x p  matrix)
	or multiplies a 1-dimensional matrix by an n-dimensional matrix
	or an n-dimensional matrix by a 1-dimensional.
MATMUL(REAL ARRAY A[a:b,c:d],REAL ARRAY B[c:d,e:f],REAL ARRAY C[a:b,e:f]);
	multiplies A by B and places the result in C
	(MATMUL(A,B,A) and MATMUL(A,B,B) are also valid.)
	The only thing it won't do (I think) is multiply two 1-dimensional
	matrices or n-dimensional arrays (n>2).

2) Array Clear Routine
	MATCLR(REAL (or INTEGER) ARRAY A);
	Zeros the array A.

3) Real Array Multiplied by a Real Constant
	CONMUL(REAL ARRAY A,REAL B);
	Multiplies array A by constant B and places the result in A.

All three are available by saying REQUIRE "MATMUL[4,SHK]" LOAD_MODULE;
*30 Aug 1972	UUO	SHK
There is now a numerical listing of the UUO's - UUO.SHK[S,DOC]
*4 Sept 1972	AP NEWS (APE, HOT)	ME

The AP news is now spooled once a day (at either 7am or 7pm).  The
listing, which will be kept in the lounge, will indicate a file name
of "APNEWS[AP,SYS]".
*4 Sept 1972	FILDMP	RPH
New program to list files in different formats. See FILDMP.RPH on UP,DOC.
*4 Sept 1972	NEW SAIL	RHT
 EFFECTIVE 1201 AM SAT, 26 AUG, A NEW SAIL SYSTEM  WILL  BE  UP.  ITS
 SEGMENT  WILL  BE  SAISG4.  THIS NEW SYSTEM WILL INCLUDE SEVERAL NEW
 FEATURES, INCLUDING USER REQUESTED  INITIALIZATIONS,  A  LOCATION(X)
 FUNCTION,  AN  IMPLICIT  ARRAY:  MEMORY[0:MEMSIZE], THE RUDIMENTS OF
 MULTIPLE PROCESSES, AND  MUCH  MORE.   WE  WILL  TRY  TO  HAVE  SOME
 DOCUMENTATION READY BY THE LATTER PART OF THE WEEK.
*22 Sept 1972	NEW SAIL	RHT,JRL,KVL
 THE NEW SAIL SYSTEM IS UP. THERE ARE MANY NEW FEATURES INCLUDING
 MULTIPLE-PROCESSES WITHIN JOBS,EVENTS, A LIMITED FORM OF BACKTRACKING
 BETTER FOREACH STATEMENTS, BETTER ERROR RECOVERY ETC.

 THE DOCUMENTATION FOR THE NEW FEATURES IS NOT YET AVAILABLE, BUT
 EXAMPLES OF THE GLORY OF NEW SAIL ARE CONTAINED IN PAPER.DOC[S,JRL]
 NEWFEA.TXT[S,JRL].

 THE NEW SYSTEM USES SAISG4, LIBSA4, HLBSA4, AND FOR YOU GLOBAL
 MODEL HACKERS GLBS10. 

 NO SOURCE LANGUAGE INCOMPATIBILITIES ARE KNOWN, BUT OF COURSE
 ALL PROGRAMS LOADED TOGETHER SHOULD BE COMPILED WITH THE
 NEW COMPILER, AND OLD PROGRAMS SHOULD BE RECOMPILED BEFORE THEYY
 ARE RELOADED.


 OLD DUMP FILES SHOULD CONTINUE TO RUN FOR A WHILE UNTIL
 SAISG3 IS DELETED.

 SEND COMPLAINTS AND BUGS TO S,AIL OR SEE JRL,KVL OR RHT
 A CURRENT LISTING WILL BE APPRECIATED. BETTER SERVICE
 WILL BE GIVEN IF YOU ARE ABLE TO TICKLE THE BUG IN A SMALL
 PROGRAM WITHOUT UNREADABLE MACROS.

 FOR THE NEXT COUPLE DAYS WE WILL KEEP THE PREVIOUS COMPILER
 AROUND AS SAIL.921[1,3], SAILOW.REL AS SAILOW.921, AND
 GLBLOW.REL AS GLBLOW.921.  IF YOU FEEL YOU ARE BEING
 SCREWED BY SOME TERRIBLE BUG, YOU CAN, FOR INSTANCE,
 SAY SOMETHING LIKE
 
 R SAIL.921 <CR>
 * FOO←FOO <CR>
 * LOADER!
 * SAILOW.921[1,3],FOO <ALT>
 
 WHERE THE STARS ARE TYPED BY THE SYSTEM
 
 THIS WILL GIVE YOU THE EFFECT OF DOING 
 
 LOA /COM FOO
 
 USING THE PREVIOUS SYSTEM.  
*22 Sept 1972	Upper Segment RAID and DDT	TVR
RAID or DDT may be retrieved from the disk  and  run  from  an  upper
segment.  This means your core image may contain RAID at a much lower
cost (102 octal words instead of 12200 words for RAID).  For  details
see DEBUG.DOC[1,TVR]
*22 Sept 1972	AP NEWS (APE)	ME
Multiple word keywords are now implemented in APE.  To use them,
separate the individual words with spaces in your keyword exressions.

Also, to have only the first few lines of each story you select
typed out, type an "F" at the beginning of the story selection
line ("Read which one(s)?").  If you use both "F" and "=" on
the same line, the order is irrelevant.  When you use the "F"
feature, you cannot spool or save the stories in a file.

For details on using APE, see the file APE.ME[S,DOC].
*12 Oct 1972	FAIL	TVR
FAIL has been  changed to stop at each  error and give the  option to
continue to next  error, continue automatically or to edit.  The edit
option will call SOS  if there are line numbers  and E if not  (sorry
TECO hackers).  Any  complaints should be sent to TVR.   If you don't
want  to stop  at  each error,  give FAIL  the switch  (F).   The old
version is FAIL.OLD[1,3].
*21 Oct 1972	SAIL	JRL,RHT,KVL
A new SAIL compiler has been put up to correct bugs reported in the
last few weeks. There should be no incompatibitlies with the preceding
compiler and programs compiled with the previous compiler should
be runable with programs compiled with the new compiler. Thus, there
is no need to recompile or even reload SAIL programs which have
been compiled since SEPT 21.  If you do have a program which
compiled in the last month but doesn't now:
	1. REPORT THE PROBLEM TO A SAIL HACKER - or send
	   a message to AIL, including such details as
	   where a copy of the offending program is and the
	   nature of the SAIL bug.
        2. You may use the previous compiler by
	   R  SAIL.102
           * FOO←FOO
           * <call>
           where  FOO is the name of your sail program and  <call>
	   represents the typing of the CALL button (the stars are
	   typed by the system). The above sequence is equivalent to
	   the system level command:

		COM /COM FOO

A note to users of multiple processes and matching procedures:
	To initialize the multiple process environment the user
        should include the following declaration:

	   EXTERNAL PROCEDURE MAINPR;

	He should also make sure this procedure is called before
        doing any process sprouting or matching procedure calling.
	This is best done by using the REQUIRE INITIALIZATION feature
        or by making:
	   MAINPR;
        The first executable statement of your program.
This initialization will be compiled in, in the near future but until
then the above hack is required.
*3 Nov 1972	USER INTERRUPTS	FW
The PC stored on a memory protect interrupt via the new-style
user interrupt system is now the exact PC stored by the hardware,
rather than being incremented as it used to be. This is consistent
both with the old-style (DEC) user interrupt system and with the
"ILL MEM REF AT USER xxxxxx" typeout. If you really care about
the exact value of this PC, consult me or the PDP-10 flowcharts,
as it is anything but consistent.
*3 Nov 1972	VIDEO SWITCH	FW
The VDSMAP UUO now allows the 6 extra switch channels to be
addressed by setting bit 9 in the AC and putting the channel number
(0-5) in the TTY# field (11-17).
*8 Nov 1972	DUMPS	REG
DART, a new program to back up disk  files  on  tapes,  is  available.
system commands DUMP, RESTORE, TLIST, REWIND, BACKSPACE, ADvANCE all
run DART now, instead of DAEMON (CAUTION: new syntax in some cases).
See DART.REG[UP,DOC].
*8 Nov 1972	PROTECTION	REG
The  file  access  protection  bit  400,  which   formerly   had   no
signifigance,  now  means  'Dump  Never' in DART.  All files that had
used this bit have been renamed without it.
*11 Nov 1972	SYSTEM	REG
The job table JOBQUE in the system now contains either the positive 
or negative value of the queue code of a job. Formerly, it had
always been negative.
*26 Nov 1972	FTP	DCS
A new FTP has been installed with the following features:

 1) You needn't type the MODE, TYPE, or BYTE commands at all
    unless you want to change the defaults of S, I, and 36 resp.
    Changing them is inadvisable since we only support those
    settings.  The defaults will be to the foreign host just
    before the first data transfer.

 2) RSTR clears any DATA connections that the FTP thinks it has
    open.  Sometimes it's wrong.  If you get an indication from
    FTP that a command is illegal because the DATA connection already
    exists, do this command.  It will go away when hacks in FTP
    have been cured.

 3) QUOT sends the rest of the line directly over the net, so you
    can use it to execute other peoples commands which are either
    nonstandard or just unsupported here.  This won't do any good
    if our end has to be involved in the operation, but it is good
    to do things like STAT (status), and HELP at CMU.
 See FTP.DCS[UP,DOC] for "complete" information about our FTP,
 and NIC document 10596 for complete FTP protocol description.
*26 Nov 1972	MLISP2	DAV
A new version of MLISP2 has been put on the system.  An old version
exists and will be around for one week.  The main motivation for
the changes was to fix several serious bugs,
and to clean the language up prior to publishing a manual.
Changes:
	(1) Variable names can no longer be literals (e.g. IF, FOR, ...).
	(2) <IDEXP>, <ADDEDEXPR> have been subsumed by <EXPRESSION>.
	(3) SPECIAL variables now must be declared at translation (PARSE)
		time.  To facilitate this, a new production has been added,
		having the form:	SPECIAL <identifier_list>
		It is strongly suggested that all SPECIAL variables be
		declared at the top of the program using this production.
	(4) ?# in the syntax (to inhibit scanning) should now be just #.
		It no longer takes up a syntax position.
	(5) Setting variables in backtracking contexts is now done with
		real LISP numbers (formerly machine representation).
		A function CONTEXT() gets the current backtracking
		context.  X{CONTEXT()/10 + 3} ← etc. is now legal.
	(6) THE FOLLOWING CHANGE IS TEMPORARY; WILL BE FIXED IN A DAY OR 2:
	(*) Prefixes are more restricted in use; the syntax is
		<PREFIX>  <SIMPEX>  as always, but IF, FOR, CASE, etc.
		are no longer <SIMPEX>'s but are now full <EXPRESSION>'s.
		Thus RETURN IF ..., PRINT CASE ..., etc. no longer work;
		use  RETURN(IF ..., PRINT(CASE ..., etc.
	(7) The syntax of SELECT has been changed.  Use SUCCESSOR instead
		of NEXT, and FINALLY instead of IN WHICH CASE.
		E.g. SELECT CAR(L) FROM L:'(A B C) SUCCESSOR CDR(L)
			UNLESS NULL(L) FINALLY FAILURE()
	(8) MLISP2.PRI now prints as it goes along, instead of at the end.
*3 Dec 1972	SAIL	RHT
A new SAIL system will be put up at 2359 Thursday, 7 Dec 1972
This system will include 
	(1) Leap revisions by JRL.  This means that any programs
		that use LEAP should be recompiled.
	(2) User required initializations will take place as
		the first executable statement of the main
		program (after outer block arrays have been
		initialized). Programs that are loaded
		with any .REL files which have user initializations
		should have their main programs recompiled.
	(3) Hooks into the user interrupt system have been provided.
		Those interested should see Russ Taylor.
	(4) A new kind of declaration has been provided:
		CLEANUP proc1,proc2,proc3;
	    Where proc1, etc. are names of (parameterless)
	    procedures.  The effect of a CLEANUP declaration 
	    is to cause the named procedures to be called
	    whenever the block in which it occurs is exited,
	    whether by falling through the end, doing a go_to,
	    or by any other means.  These procedures will be
	    called before any local arrays, sets, or lists are
	    released.  The calls will take place in the order
 	    specified.  Thus:

		BEGIN
		INTEGER I;
		PROCEDURE FOO;I←1;
		BEGIN
		INTEGER ARRAY X[0:I];
		PROCEDURE BAZ;OUTSTR(CVS(X[I]);
		CLEANUP FOO,BAZ;
		:
		COMMENT NOW WHEN THIS BLOCK IS EXITED, X[1] WILL
			BE PRINTED OUT;

		:
		END;
		END;

	(5) various minor modifications to the process stuff.

The new segment is SAISG5.SEG, the libraries are LIBSA5.REL
& HLBSA5.REL.  

The old compiler will be SAIL.D07[1,3]
*12 Dec 1972	AP NEWS (APE)	ME
There is now a full search feature in APE.  If you type in a word
that is not in the keyword dictionary, APE will tell you so and ask
you if you wish a search done.  If you type Y (and <return>), the
news file will be searched for the specified keyword.  If you type
"?", a (complete) summary of this feature will be typed out.  If you
type anything else, no search will be done.  You may interrupt a
search in progress by typing a carriage return or (on displays)
[ESC] I.

Note: Every word not in the dictionary requires a separate search to
be done.

Special note: Normally the whole news file is searched, taking 8 to
10 seconds, but if a non-keyword is the second part of an
intersection (eg, NIXON * JJ) or difference (eg, NIXON - JJ), then
only the necessary stories are searched.
*12 DEC 1972	PUB	TES
PUBMAC.DFS[1,3] has been edited to correct an error in INDEX creation.
The old version is PUBMAC.OLD[1,3] for a few weeks.

The PUB manual has been deleted from the disk.  The abstract remains
on PUB.TES[S,DOC].  Bound copies are in the SAILON file drawer.

In January, a new-SAIL PUB should be up with several obscure but
annoying bugs removed.  Major restrictions and bugs now known:
	SEND INDEX ⊂ ... ⊃	must be all on one line
	See {PAGE X}		must be followed by a non-word-break
					such as  ) , ; ] .
					but definitely not a SPACE
	NARROW, WIDEN, VARIABLE only work within a block -- not at top-level.
	TURN OFF "}" inside blocks doesn't always work right (just for "}")
	↓_abc_abc_abc_↓ seems not to work right in FILL mode someplaces.
	Footnotes hack a lot, esp. if the page fills up during one.
*9 Jan 1973	NEWS	LES
To get selective listings from the NOTICE file, say "R  NEWS",  which
will respond with an asterisk and expect a query such as
 *March 15
This asks for all notices posted since the ides of March. If the  day
is  omitted,  1  is  assumed;  if  the  month  is omitted, January is
assumed; if the year is omitted  (as  above)  the  last  instance  is
assumed.

 *Nov<TAB>SAIL
is an example of a more general kind if query.   This  asks  for  all
notices  since  last  November  1  that  contain  the  string  "SAIL"
somewhere in the subject field, with any  case  differences  ignored.
The search could be made more specific by saying
 *NOV<TAB>SAIL<TAB>DCS
which delivers only such notices written by Dan Swinehart.

If  the  query begins with a <TAB>, so that the date is omitted, then
all dates will be accepted.   Similarly, the  Subject  field  may  be
omitted. A null query outputs the entire NOTICE file.

If you would like the output to be spooled, type "*" at  the  end  of
your query, e. g.
 *July 4, 1776	Sex*
If you would like to see title lines only, put a "-" at the end.  You
can use both "*" and "-" together in either order.

If you forget all this, type "?<return>" and this notice will  appear
magically.
*23 Jan 1973	AP NEWS (APE)	ME
A new version of APE has  been  put  on  the  system.   The  new  APE
includes several changes to input formats, particularly where file or
spooler output is desired.  The file APE.ME[S,DOC]  has been  updated
to  explain  all  the  new  features in detail.  You should read that
file,  especially  pages  4  to  12,  before  trying  to   run   APE.
Alternatively,  you can type a question mark (and carriage return) to
APE at any time to get help.  Here are some of the main changes.

All input lines  must  now  be  ended  with  carriage  returns  (this
includes the "Y" to cause a search).

Input to APE from a command file is now possible (and easy/fun).  The
command file should have the name APE.CMD to be most convenient,  but
any  file name is legal as is (almost) any text file format (SOS, TV,
E, etc.).

A "CHOOSE" feature has been added to allow you to see  the  beginning
of  each  story  and  then  decide if you want to see the rest of the
story.

To get output to a file, you say
	<filename> ←
followed by the usual story selection specification.

To get output to the spooler, you add an "S" to the selection line.

To avoid having stories typed out, for instance when they  are  being
spooled, add a "D" (meaning Dont type 'em) to the selection line.

[ESC] I will interrupt searches as well as typeouts now.

To be notified whenever a story comes in that matches a certain
keyword expression, precede the expression with a dollar sign ("$").

You can have APE typeout the keywords by which a story has been
categorized by adding a "W" to the selection line.
*28 Jan 1973	SAIL	JRL

The item NIC returnedby INTERROGATE when the notice queue is empty,
is now the same as the item UNBOUND used in ? FOREACHES and
matching procedures.
	i.e.
		(NIC=UNBOUND) is TRUE

UNBOUND has a new name BINDIT since we felt the name UNBOUND had
erroneous connotations.

Both NIC and UNBOUND will be allowed for a while, but you should
replace them with BINDIT in your source-files.

Because of these changes programs using NIC, UNBOUND should be
recompiled.

ANY is now an item (though it can't be used in MAKE statements).

So you may now say:
		ITMVR ← ANY;
		ERASE A⊗B≡ ITMVR;
which will have the same effect as 
		ERASE A⊗B≡ANY;
ANY may be an element of a set or list.
All itemvars are originally initialized to ANY.

*22 Feb 1973	FAIL	FW
Several changes have been made to FAIL:
1)	CALL names are now automatically OPDEFed as their corresponding
	CALLIs, so CALL is virtually obsolete. This is done dynamically
	so it should always be up to date.
2)	BEND, if given an identifier argument, now checks that argument
	against the name of the block it ends, and generates an error
	message if they mismatch. This can be used as a check on
	BEGIN/BEND phasing.
3)	The symbol $. is now available, which is like . except that it
	refers to the location actually occupied by the current instruction.
	This differs from . inside literals or if a PHASE is in effect.
4)	Declaring a symbol both INTERNAL and EXTERNAL is now an error,
	rather than causing FAIL to drop dead as it used to.
5)	The test for too many BENDs now works properly.
6)	Frequently redefined macros no longer eat up large amounts of core.
*25 FEB 1973	COPY	RPH

New copy features:
  1) If you use [p] instead of [p,pn] the current default pn is used.
  2) XGPLIST, new command, equivalent to COPY XGP:←.
  3) New switch for font selects, format:

		/FONT{#n}=<filename>{.ext}{[<p>,<pn>]}

	If no ext is given, FNT is assumed. If no p,pn is given
  XGP,SYS is assumed.The #n is the font id number, if it is left
  out, it is assumed to be 0.
  4) New format for /EXTRA switch, if you use /EXTRA≡n.
  (yes that's an equivalence sign), then n is the number
  of scan lines to skip between text lines, not the number
  of extra line feeds to insert.
*4 MARCH 1973	MLISP	DAV

New version of MLISP is up; old copies will be kept on MLISP.OLD
and MLISPC.OLD on the system for a week or two.  Differences:
  1) A couple of lingering bugs were squashed.
  2) A COMMENT expression was added so that MLISP will accept TV
	format files.  Syntax:
		COMMENT <any characters except ; or unpaired " or %> ;
	It may occur anywhere an expression may be used, e.g.
		A + COMMENT A DUMB PLACE TO PUT IT; B + C
		BEGIN
		COMMENT A BETTER PLACE TO PUT IT;
		A + B + C;
		END;
	The old %...% comment is still around as always.
  3) An updated version of the LISP compiler is included in MLISPC.
  4) Insignificant change: function names are printed horizontally
	instead of vertically.  Don't worry, PRINT is not screwing
	up; that's the way it is supposed to work.
*5 MARCH 1973	PUB	TES

THIS NOTICE IS ABOUT 70 LINES LONG, IN DECREASING ORDER OF
    IMPORTANCE.

A NEW VERSION OF PUB IS UP TODAY WITH MANY REPAIRS AND A
FEW CHANGES.  OLD VERSION IS PUB.OLD.  SEE TES WITH PROBLEMS.

NOTE:  UNTIL THE NEXT VERSION OF PUB IS UP, XGP USERS SHOULD
USE THE "DEVICE TTY" COMMAND OR THE "/T" SWITCH, ESPECIALLY
IF THE PAGE FRAME IS HIGHER THAN 53 LINES.

ABOUT 15 KNOWN BUGS HAVE BEEN FIXED (THANKS TO RKJ AT CMU FOR
A COUPLE OF STICKLERS).  FOOTNOTES SHOULD WORK BETTER;
VARIABLE DECLARATIONS WORK; CROSS-REFERENCES OF THE FORM
"UNIT!" LABEL  NOW WORK; AREA TEXT AND COUNT PAGE CAN ONCE
AGAIN BE DECLARED IN BLOCKS; ROMAN NUMERALS, MOD, MIN, AND,
GROUP BEGIN...END, INSERT...PORTION (WITH NO SENDS), AND SOME
OTHER THINGS NOW WORK WELL.  TRY OUT YOUR FAVORITE BUG.

ONE BUG NOT YET FIXED: SOMETIMES PUB WILL LOOP
WHEN THERE ARE AREAS DECLARED THAT DON'T START AT CHAR 1.
REPORT OTHER BUGS TO TES.

CHANGES AND NEW FEATURES:
(1) TYPEOUT DURING COMPILATION RESEMBLES NEW SAIL'S.
    NOTE: FILES LIKE 3INDE.PUZ AND 2CONT.PUG ARE GENERATED
    FILES.  PAGE 1 OF TV FILES IS NOT REPORTED BY PUB.

(2) THERE IS NO LONGER A BLANK PAGE AT THE BEGINNING OF LPT
    DOCUMENTS.

(3) NEW COMMAND TO CIRCUMVENT CHANGE (2): "BLANK PAGE N" CLOSES
    THE CURRENT PGE AND LEAVES N BLANK PAGES IN THE DOCUMENT.
    THE PAGE COUNTER IS NOT AFFECTED.  IF N IS OMITTED, 1 IS
    ASSUMED.

(4) FOR TTY USERS: INSTEAD OF CURLY BRACKETS AND HORSESHOE
    BRACKETS, YOU CAN NOW USE THE FOLLOWING CHARACTER PAIRS:
        $( MEANS LEFT HORSESHOE (OPEN MACRO)
        )$ MEAN RIGHT HORSESHOE (CLOSE MACRO)
        ]$ MEANS RIGHT BRACE (SWITCH TO TEXT MODE)
    THESE ARE ONLY VALID IN COMMAND MODE AND NEED NOT BE TURNED
    ON.  ON THE OTHER HAND, THE FOLLOWING CONTROL CHARACTERS
    ARE ONLY RECOGNIZED IN TEXT MODE AND MUST BE TURNED ON
    (OTHER CHARACTERS MAY BE TURNED ON FOR THEM):
        $[ MEANS LEFT BRACE (SWITCH TO COMMAND MODE).

(5) NEW FEATURE: TURN ON/OFF TAB FOR "<CHARACTER>" ;;
    AS PUB READS THE MANUSCRIPT, IT SUBSTITUTES FOR EACH "TAB"
    FROM ONE TO EIGHT SPACES.  THIS COMMAND CHANGES PUB SO THAT
    IT SUBSTITUTES THE SINGLE CHARACTER <CHARACTER> INSTEAD.
    THE COMMAND MUST BE FOLLOWED BY TWO SEMICOLONS OR ELSE IT MAY
    NOT TAKE EFFECT ON THE NEXT LINE.  IF IT IS DECLARED IN A BLOCK,
    THE "END" OF THE BLOCK MUST BE FOLLOWED BY TWO SEMICOLONS OR
    THE ORIGINAL MEANING OF TAB MAY NOT REAPPEAR IN TIME FOR THE
    NEXT LINE.

(6) SINGLE SPACE, DOUBLE SPACE, AND TRIPLE SPACE NOW BREAK BEFORE
    CHANGING THE VALUE OF SPREAD, SO THEY TAKE EFFECT IMMEDIATELY.

SUGGESTIONS AND WARNINGS:
(1) "COUNT PAGE" INITIALLIZES THE PAGE COUNTER TO NULL.  IT
    GETS STEPPED TO 1 THE NEXT TIME A PAGE IS OPENED.
    THIS IS WHY THE TITLE PAGE HAS A BLANK PAGE NUMBER.

(2) AREA RE-DECLARATIONS DO NOT TAKE EFFECT UNTIL THE
    CURRENT PAGE IS CLOSED.

(3) IF YOUR DOCUMENT IS LONG, IT IS HELPFUL TO HAVE A SOURCE
    FILE FOR EACH CHAPTER, AND ON EACH DEBUG RUN TO "REQUIRE"
    FROM THE MAIN MANUSCRIPT FILE ONLY THOSE CHAPTER FILES THAT
    YOU ARE TESTING.  GLOBAL MACROS SHOULD APPEAR IN THE MAIN
    FILE OF COURSE.

THE MANUAL HAS NOT BEEN CHANGED, BUT IT IS BACK ON THE DISK
FOR THE BENEFIT OF NET USERS (SEE PUB.TES[S,DOC] FOR DETAILS).
*9 MARCH 1973	MLISP2	DAV

A new version of MLISP2 is up.  Old version is on SYS:MLISP2.OLD for
a week or so.  There have been extensive changes, but most are additions
so that programs shouldn't have to be altered.  The changes:

  1) The code generated in the syntax part of productions is somewhat
	shorter and more efficient.

  2) There is now a way to prevent an identifier in the syntax part of
	a production from being turned into a LITERAL, namely precede it
	with a quote mark (').
	Example:	{IF ...}
	makes IF a LITERAL, as well as generating code to check for it,
	but		{'IF ...}
	just generates the code to check for it.  In fact, any token
	of type identifier, number or delimiter may be included in
	the syntax by preceeding it with the quote mark; previously
	only delimiters could be so included.

  3) Numbers in syntax patterns MUST now be preceeded by the quote
	mark; previously they could occur alone.  This should not
	affect anyone, since I don't know of anyone who uses numbers.

  4) The syntax of FOR, WHILE and UNTIL loops has been generalized
	slightly:  `WHILE' and `UNTIL' are now interchangeable:
	Examples:	FOR NEW I IN L DO NIL UNTIL I = X;
			FOR NEW I IN L DO NIL WHILE I = X;
			DO PRINT(X) UNTIL A=B;
			DO PRINT(X) WHILE A=B;
			WHILE A=B DO PRINT(X);
			UNTIL A=B DO PRINT(X);
	In addition, the code generated by COLLECT in all of the loops
	is now more efficient (generates an NCONC in some cases, rather
	than an APPEND).

  5) The DEFINE expression and the vector operator (⊗) have been
	added to MLISP2 to make it more compatible with MLISP
	(c.f. the MLISP manual).  However, the DEFINE
	expression is not quite as general: only prefix and infix
	functions may be DEFINEd, whereas MLISP would allow any
	symbol to be DEFINEd.
	Syntax:	DEFINE  <dterm>, <dterm>, ..., <dterm>	(at least 1)
		<dterm> ::= <identifier>  PREFIX  [<token>]  [<integer>]
			    <identifier>  <integer>  <integer>
			    <identifier>  <token>  [<integer>  <integer>]
	where [] means optional.
	The integers are binding powers for the function; only one
	binding power, the right binding power, needs to be specified for
	prefixes.  The <token>s are identifiers or delimiters which
	may serve as an abbreviation for the function.
	Examples:	DEFINE NOT PREFIX;
			DEFINE NOT PREFIX ¬;
			DEFINE NOT PREFIX 1000;
			DEFINE PLUS + 350 400;

  6) ONLY FUNCTIONS THAT ARE EXPLICITLY DEFINE'D TO BE PREFIXES MAY
	NOW BE USED AS PREFIXES (I.E. WITHOUT () AROUND THEIR
	ARGUMENT AND WITH THE VECTOR OPERATOR ⊗)!!!  NO MORE USER-DEFINED
	PREFIXES UNLESS EXPLICITLY DEFINE'D!!!
*16 March 1973	FREEFOROL processes Text Macros	LES
Freeforol may be used to  generate  form  letters  or  other fill-in-
the-blanks text.  It is described in FREEFO.LES[UP,DOC].
*21 March 1973	WHERE Command	TVR
Typing  WHERE  <programmer>  will  print  the  status  of  such  jobs
currently logged in.  For  example,  WHERE  NET,GUE  will  WHERE  all
network guests. Like WHO, this also clobbers your core image.
*27 March 1973	TV ↔ E switching	DCS and FW

During transition from TV to E, there will be features available
  in one which are unavailable in the other.  To ease the switch,
  we have installed complementary extend-mode commands:  "ETV"
  in TV, "TV" in E.  Executing it will switch editors (writing 
  current page first, if necessary).   The new editor will be 
  editing the same file, on the same page and line, with the same
   protection (readonly or readwrite).

The "TV" command in E is only a special case of a much more 
   glorious "RUN" feature.  For more information see TV2E.FW[UP,DOC].
*4 April 1973	TALKER, FTP	DCS

In response to the Site: prompt, one can type a site name or
a (decimal) site number -- one way to try to find out the site
name of an otherwise Anonymous site.
*5 April 1973	PUB	TES
Users of Jerry Agin's underground figure macros note:

"MACRO SECREF" et al have a bug which was ignored by old
versions of PUB but now result in the error message:
	"EXTRANEOUS { IN COMMAND LINE"
To fix this, remove both the { and } from these particular
macros.  E.G.:
	.MACRO SECREF ⊂ "Section " ;{SECTION! LBL} ⊃
should be:
	.MACRO SECREF ⊂ "Section " ;SECTION! LBL ⊃

If you like, this can be abbreviated:
	.MACRO SECREF ⊂ "Section!" LBL ⊃
which did not work in old versions but now does!
*8 April 1973	APE, AUTOMATIC NOTIFICATION	ME

If you wish to be notified each and every time an AP story  comes  in
that  matches  a given keyword expression, type the expression to APE
and precede it with a dollar sign ($). For example,
	$JUPITER*PIONEER
When a story comes in that matches the expression, you will be sent a
message which you will get when you login.  Also, if you  are  logged
in at the time the story comes in, the message
	*** AP STORY FOUND ***
will be typed on your console.

To see what automatic notification requests you currently have,  type
the  keyword expression "$" (just dollar sign) to APE.  To be able to
delete these requests, type the expression "$$".  Each  request  will
expire  two months after it is submitted. At that time you will get a
message indicating that the request has expired.
*9 April 1973	APE, AUTOMATIC NOTIFICATION	ME

Here are some notes on using Automatic Notification for AP stories.

Automatic  notification (AN)  is  intended to  be used  for  two main
purposes.  1) If you are expecting an urgent story to come in  at any
moment, and you want to be notified as soon as it comes  in (assuming
you are logged in),  automatic notification saves you the  trouble of
running APE every half  hour to find out  if your story has  come in.
2) If you are expecting  a story to come  in some day, but  you don't
know when, then AN saves you the effort of running APE every  day, if
you wouldn't otherwise do so.

If  you find  you are  being notified  about the  same kind  of story
several times a day, and if the stories are not  particularly urgent,
then you  will probably  find that  the normal  use of  APE, possibly
using a command file (see previous section) will be  more convenient.
Also, the more AN requests  there are, the more work  the continually
running special  AP programs have  to do.  However,  you are  free to
choose the method of using APE that best fits your purposes.

One final note on AN: When you get a hit from an AN request, the best
way  to use  APE  to read  the story  is  to type  in  the expression
(possibly using a command file) that got the hit.  Alternatively, you
can  type in  the sequence  number of  the story  found, but  this is
liable to give you an extra story with the same sequence number.  You
can  combine  these  two  methods  and  type  something   like  (say)
"#35*CHESS", if CHESS was the  AN request getting a hit on story #35.
If a story you have been notified about is more than a day or so old,
then you will probably not find it with APE.  However, since the news
is  spooled  every day, you should be able to find old stories in the
stack of listings in the lounge (unless you are a remote user!).  For
even older listings, see ME.

For more details, see APE.ME[S,DOC], special features 10, 11 and 12.
*11 APR 1973	INFO	REM

To have access to the REM information system, type "R INFO".
The general form of command is "R INFO;<FILNAM>;<PRETYPE>"
if you are an expert and know what that means.
*9 May 1973	FAIL	FW

Several changes have been made to FAIL:

1)	The CALLI opcode definer has been extended to include all
	UUO opcodes. Thus all existing system calls now have their
	mnemonics predefined in FAIL. Again, this is dynamic, so
	it will continue to be up-to-date with no further changes
	to FAIL itself.

2)	A couple of new symbol constructs are available. One is
	SYM::, which defines SYM as a half-killed label, just
	as in SYM←←EXPR. Also, SYM↑ may be used anywhere SYM is
	legal and will make SYM either EXTERNAL or INTERNAL,
	depending upon whether it is defined in the program.
	Thus SYM↑:: makes SYM a half-killed internal label, etc.
	(N.B.: Any symbol which has been declared EXTERNAL will
	be converted to INTERNAL if and when it is defined.)

3)	The PRGEND statement (from MACRO) is now available to
	allow multiple independent programs to be assembled
	within a single file. This is particularly useful for
	libraries. PRGEND behaves exactly like END, and similarly
	causes a complete assembler restart, except that I/O
	is undisturbed and assembly continues.
*19 MAY 1973	MLISP2	DAV

Two new runtime functions have been added to MLISP2:
	PEEKVAL(integer) - peeks at the integer'th token ahead without
			advancing the scanner, and returns its value
	PEEKTYPE(integer) - peeks at the integer'th token ahead without
			advancing the scanner, and returns its type
The existing runtime function PEEK is equivalent to
		PEEKVAL(1) CONS PEEKTYPE(1)

The MLISP2 manual/report is now available as AI Memo 195.
*22 May 1973	MAIL SEND REMIND CANCEL	BH
The SEND command now sends messages to users' consoles, and the
MAIL command sends messages to be received on login (what SEND
used to do).  There is also a REMIND command for delayed messages,
and a CANCEL command to delete reminder requests.  All these
commands are fully documented in MAIL.BH[UP,DOC].
*1 JUNE 1973	MLISP2	DAV

New MLISP2 system up.  Features:

(1) An automatic accounting feature has been added to MLISP2's
	version of LAP.  Any user (or system) function compiled
	into LAP and read in will be included in the accounting
	system.  The accounting system keeps track of the total
	number of times a function is called.  (It adds two
	instructions to every function LAP'ed in:
		AOSA .+1
		0
		<user code>
	).  The counts may be examined, set, and reset.  NOTE:
	interpreter and interpreted functions are not accounted;
	only functions LAP'ed in.

(2) To facilitate the above feature, two new runtime functions
	have been added:
	GETCOUNT(atom) - takes a function name as its argument
		and returns the number of times the function
		has been entered.
	PUTCOUNT(atom, integer) - sets the number of times the
		function has been entered to the integer (usually 0).
*2 Jun 1973	MAIL SEND REMIND CANCEL LATER GRIPE	BH
The following nifty features have been added to the MAIL program:
1.  The switch /D on SEND, MAIL, or REMIND will add a line to the
    message containing a list of the destinations.  If your list
    included a file reference, both the file spec and its contents
    will be listed.  Try SEND/D . FOO etc. for the format.
2.  The REMIND system will now run an arbitrary program for you
    if you use the command
	.LATER <filespec> <core> <datime> <count>
    default device DSK (the only other option is SYS), default
    extension DMP.  Datime and count are like REMIND.  Core is
    an optional argument in real angle brackets specifying an
    initial core allocation and/or start address offset as in
    the SWAP UUO, in the format <99K,+77> (decimal and octal).
3.  There is an RPG feature, which reads commands from QQMAI.RPG;
    see MAIL.BH[UP,DOC] for a full description of this and
    related useless features.
4.  The GRIPE command exists to vent your anger at Ralph's
    malfunctions.
5.  REMIND/M or REMIND/S for mail only or send only.
6.  If you are logged in when someone MAILs you a note, you
    get a one-line message ;; →→→ MAIL FOR ppn ←←←.  This
    is also true for mail sent over the net via FTP.
7.  If you type in a long message and get screwed because
    of an error in the destination list or something, you
    can REENTER and edit your command.
All the gory details are in MAIL.BH[UP,DOC], which you
should be sure to read especially if you want to use the
LATER or RPG features.
*4 Jun 1973	MAIL SEND REMIND LATER CANCEL GRIPE	BH
The destination list is now checked by MAIL and friends
before asking for the message.  Invalid destinations (i.e.,
non-existent users) get a message; if there are no valid
destinations in the list, the program exits.  Note: SEND
does not check for logged-in users until ater you enter the
message, as before; only the existence of a file directory
is checked ahead of time.
*19 June 1973	WHOLINE TIME DAYTIME ESCAPE X ESCAPE Q	ME

A  new wholine,    new  TIME and  DAYTIME  commands, two  new  ESCAPE
commands and some new TTY monitor commands are up.

------

The new wholine  contains one new time  on the user line;  this time,
called XTIME and  followed on the wholine by an X, is the incremental
run time for the  given job since  the last teletype interaction  and
is shown in  hour, minutes, seconds and ticks.   The number after the
single  quote is ticks.  The single quote  itself is a right quote if
automatic  resetting  of  XTIME  is  enabled  and  a  left  quote  if
automatic resetting is inhibited; see [BRK] X below.

The XTIME is reset whenever the job comes  out of teletype input wait
and  whenever the  job is caused  to run  by a monitor  command other
than CONTINUE.   Thus the RUN, GET,   SAVE, SSAVE,  CORE 0,   FINISH,
START,  REENTER, DDT and all  the RPG monitor commands cause XTIME to
be  reset; and if the  job goes into IOWQ waiting  for input from the
teletype, then the  XTIME will be reset  when the job is  awakened by
teletype input.   However, note that if you have  typed ahead and the
job reads characters from the  teletype without having to wait,  then
your XTIME  will NOT be  reset.  (Monitor  commands that run  the job
will reset XTIME whether or not you have typed ahead.)

------

In order  to allow  flexible use  of this  new incremental run  time,
some  new ESCAPE keyboard  commands have  been added along  with some
new monitor commands.

[BRK]  X inhibits  automatic  resetting of  your  XTIME.   Thus  this
allows your XTIME  to continue accumulating indefinitely.  It will no
longer be  reset  by coming  out  of tty  input  wait or  by  monitor
commands that run the program.

[ESC] X undoes  the effect of [BRK]  X, thus causing XTIME  to resume
being reset at the normal times.

Note that  neither  [ESC] X  nor [BRK]  X  causes any  change in  the
current XTIME.

[ESC] 1 X causes  your XTIME to be reset and  then inhibits automatic
resetting of XTIME.

[BRK] 1  X causes your  XTIME to be  set to your  total run  time and
then inhibits automatic resetting of XTIME.

------

Four new monitor commands have been added to  allow users who are not
on displays to get the effects of the above ESCAPE commands.

TTY UPDATE  does  the same  thing as  [ESC] X,  ie, enables automatic
resetting of your XTIME.

TTY NO UPDATE does the same thing as  [BRK] X, ie, inhibits automatic
resetting of your XTIME.

TTY TIME does the same  thing as [ESC] 1 X, ie, resets your XTIME and
then inhibits automatic resetting.

TTY NO TIME does the same thing as [BRK] 1  X, ie, sets your XTIME to
your total run time and then inhibits automatic resetting.

------

The  TIME command  has  been  modified  to print  out  five  labelled
quantities.   (TIME  still takes  an  optional job  number argument.)
Four of  these  are  times,  which are  printed  in  hours,  minutes,
seconds and ticks (the number after the single quote is ticks).

TOTAL is the total run time for the specified job.

INCREMENT is the old  incremental run time that the  TIME command has
always  printed and reset.   When you  request the TIME  for your own
job, this time is reset (like it always has been).  When  you request
the TIME for  another job, you do NOT cause  his incremental run time
to be reset.

XTIME is the  new XTIME which is explained  above.  The XTIME  is not
changed at all by the TIME command.

WAIT is  the time the  job has  spent waiting for  the system.   This
includes  actual time running as  well as time waiting  to be run and
time waiting for disk  I/O, etc, but does  not include time spent  in
IOWQ waiting for  teletype input, nor time in STOPQ,  NULLQ or INTWQ.
This time also appears on the wholine with the label W.

KCS is the total number of kilo-core-seconds  you have used since you
logged in.   This number is incremented by your  core size (in K) for
every second of runtime.

------

The DAYTIME command  now takes an  optional job number  argument, eg,
"DAYTIM 22".  If the job number  is zero (eg, "DA  0"), then your own
job number is  used. If there  is an argument,  then three times  are
printed:  the time  of  login  of the  specified  job,  the time  the
specified  job  was last  run,  and the  current time.    The DAYTIME
command with no argument does the same thing it used  to do, ie, give
you the day, date and time.

------

[ESC] Q  now gives you  the wholine  for the next  job with the  same
programmer  name as the job  on your current wholine,  or as your own
job if you have no wholine up.

[BRK] Q does  the same thing as [ESC]  Q except that it  searches the
job table backwards.
*2 July 1973	NOTICEs	ME

The news file NOTICE[UP,DOC] is now in E/TV format (and should be
kept that way).  Each writeup is on a separate page so that E's
directory page shows the title lines from all the writeups.  This
enables the NEWS program to run much faster.
*12 July 1973	SYSTEM NEWS PROGRAM	ME

A new NEWS program is up.  It makes use of the E/TV directory page
of the NOTICE file to do random access to individual writeups after
searching only the directory page.  Each writeup must now be on a
separate page, with the title line being the first line of the page.
The NEWS program will now run much faster than before because of
this new design.

Also, three new features have been added.

[ESC] O (control-O on ttys) is undone just before each writeup is
typed out; so you can flush the remainder of a single writeup by
typing [ESC] O or control-O.

[ESC] I interrupts the current search, thus flushing a whole series
of typeouts and returning you to the point of typing in a line.
This also flushes any spooler output you may have requested.

Finally, when you spool a collection of writeups, the title line of
each writeup will be typed out on the console.
*12 July 1973	MAIL SEND REMIND RCV	BH

Several new features in the MAIL system:
1.	The RCV command to edit your mail message by message.  Type
RCV for your own mail, RCV prg or RCV prj,prg or RCV prj,* for other
people's mail, or RCV #filename for an arbitrary file in mail format,
i.e., messages start with a line starting with "∂".  For each message
you can save, delete, spool, copy, edit, etc. it.  The program is
more or less self-explanatory, but you can read RCV.BH[UP,DOC] if you like.
2.	The SEND command has a new switch, /W (for Where), which tells
you ppn, tty, jobname, queue, and all that stuff for all consoles which
get the message (good for seeing if the recipient is using E and lost it).
3.	There is a /U switch for undefined users, to allow mail to be sent
to people not known to the system.  It still warns you they're unknown.
4.	If you start a one-line message and decide you need more lines
after all, end the command line with a linefeed and you'll be allowed
to continue the message
5.	Filenames in both MAIL and RCV may use the ↓...↓ notation for
non-alphameric chars.  Also, there is a special abbreviation for message
filenames: use ∂ for your own mail file, ∂prg or ∂prj,prg etc. for
others; this implies a default of xxx.MSG[2,2] but you can specify a
different extension or ppn.
The current state of the MAIL program is documented in MAIL.BH[UP,DOC].
*23 JULY 1973	SAIL	RHT JRL HJS KVL

The following are the changes made to SAIL. These will be incorporated
in the system as of FRIDAY evening, July 27.

I. RELEASE -

RELEASE now takes a second (optional) argument, the close inhibit
bits. The implied declaration is

	EXTERNAL PROCEDURE RELEASE(INTEGER CHAN,INHIBIT);

If bit 35 (decimal value 1) is on in INHIBIT, the output
file of this channel will not be closed. If bit 34
(decimal value 2) is on the input side of this channel will not
be closed.

If you do not specify any INHIBIT field, SAIL will assume
an entry of 0. Thus,

	RELEASE(chan) is identical in effect to RELEASE(chan,0)

Any program containing RELEASE must be recompiled.

II. BUCKETS

You can now specify the size of the local model LEAP hash table
used via

	REQUIRE n BUCKETS;

The next higher power of two will be used as the hash table size.
The size will be 2↑m where, m is the smallest positive integer
such that 2↑m ≥ n. The default value for n is 512.

If several separately compiled programs are loaded together
the largest number of BUCKETS required will be used.

This should enable people who use items(for processes etc)
but few associations, to have smaller core images. Similarly
by requiring a large n, associative operations will, in general
be speeded up.

III. MACROS

Several changes have been made to the macro system.  This includes new features 
as well as some changes to existing features.  If the changes cause programs to 
perform erroneously, there exist means to override these changes.  If problems 
still persist, contact HJS.  

A.  Changes:  
1.  DEFINE reverts to its old meaning - i.e. it is used to both declare the name
    as a macro name and to assign a piece of text to it.  Any subsequent redefi-
    nition has the effect of suspending the previous definition until the end of
    the block within which the new definition occurs.  At the end of the block
    the name reverts to its previous definition.  Currently the mode of
    operation is that all subsequent DEFINE's with the same name act as a
    redefinition which remains in effect for the lifetime of the macro name
    (where lifetime is defined to be the block where the name was first
    declared).  REDEFINE is a new construct that has been added to allow such
    redefinition.  In order to enable current programs using macro redefinition
    to work the following statement should be inserted in the beginning of the
    program: 
			LET DEFINE=REDEFINE; 
    This modification will cure the DUPLICATE IDENTIFIER DECLARATION error
    message that will occur when two DEFINEs with the same macro name are seen
    in the same block.  Otherewise, the second DEFINE should be replaced by
    REDEFINE.  

2.  IFC reverts to its previous meaning that macros are expanded in the false
    part of conditional compilation.  IFCR is a new construct that has been
    added to allow suspension of macro expansion in the false part of
    conditional compilation.  In order to use this feature, one simply uses
    IFCR instead of IFC.  Users who have been accustomed to macros not being
    expanded in the false part of conditional compilation can have that effect
    by inserting the following statement in the beginning of the program: 
			LET IFC=IFCR; 

B.  New Features:  
1.  NOMAC macro_name is used to inhibit expansion of macro_name when it is
    scanned.  For example if Z has been defined to be a macro name in an outer
    block and in an inner block it is desired to use Z as an integer then it is
    declared as: 
			INTEGER NOMAC Z;

2.  EVALDEFINE macro_name is used whenever a DEFINE is appropriate and has the
    effect that the macro_name is expanded.  For example, suppose X has been
    defined earlier in the program to be a macro having VAR as its textual
    value, then the following statement 
    			EVALDEFINE X=⊂VARIABLE⊃; 
    has the effect that VAR is defined to be a macro name having VARIABLE as its
    textual value rather than X be redefined to VARIABLE.  

3.  If a macro is called with less actual parameters than called for by its
    original definition, then the missing ones are treated as if they had been
    given the null string as a value.  

4.  ASSIGNC is used to assign values to macro formals.  The syntax of the
    statement is identical to that for DEFINE.  This feature can be used to
    simulate a macro call by value when the value is a compile-time expression.
    For example: 
			ASSIGNC A=A;  where A is a formal parameter name.  
    Another use of the ASSIGNC construct is to allow local temporary variables
    in macros.  This is particularly useful when defining recursive macros.  

5.  When a macro is defined and the list of formal parameters is given, the
    various formal parameter names can be separated by commas or semicolons.
    This is useful in case a user wants for documentation reasons to separate
    the names of the macro parameters which are used as formals from those to be
    used as local variables.  

6.  REDEFINE and EVALDEFINE act just like DEFINE when the macro name has not
    been previously encountered.  

IV. EXPONENTIATION change

    The code for exponentiation has been changed somewhat.  int↑int will now not
    lose if the exponent is negative.  However, the type of the expression that
    results is a little strange: 

	int1	 int2		int1↑int2

	integer  integer variable	real
		 integer const < 0	real
		 integer const ≥ 0	integer

   in other words, the compiler will create an integer expression (by
   producing successive multiplies) when it can do so.  It cannot know
   that an exponent variable will be >0, however, so it must assume real.
   Sorry..... See Jim Low if you are confused about this.

V. WHAT TO DO

  If your programs dont do a RELEASE or any exponentiation, you can probably
  win by reloading.  Otherwise, you must recompile.  If you think you have
  a bug, try compiling with SAIL.724[1,3] & loading with SAILW5[1,3].  If
  your program works then, but doesn't work now (and the difficulty doesn't
  stem from the changes mentioned here), then congratulations! You may indeed
  have found a new SAIL bug.  See the appropriate person(s).  Summary of old
  & new files:

				OLD		NEW

	compiler	      SAIL.724	     SAIL.DMP
	segments	      SAISG5.SEG     SAISG6.SEG
			      SAISG5.OLD (for DCS)
			      GLBS11.SEG     GLBSG6.SEG
	lower rel file	      SAILW5.REL     SAILOW.REL  -- /Y to loader will do
	(load first to att.   GLBL11.REL     GLBLOW.REL
	  to segment)	    
	libraries	      LIBSA5.REL     LIBSA6.REL
			      HLBSA5.REL     HLBSA6.REL

  Thus, to use the old(er) SAIL to get the effect of TRY FOO.SAI, type:

  R SAIL.724<cr>
  FOO←FOO<cr>
  ↑C

  R LOADER<cr>
  SAILW5[1,3],FOO<alt>

  START<cr>
*1 June 1974	FINGER	LES

To get a listing of the full names and locations of all users
currently logged in,  say "FINGER" or just "FING".  It works even if
you're not logged in.  The column labelled "IDLE" gives the number of
minutes since the job was last run (blank if less than 1).

If you say "FING <pn>" you will get information only about jobs
logged in with the given programmer name (1 to 3 characters).  If you
say "FING <string of characters>" it gives you information about the
person whose first and/or last name begins with the given string.  If
the string matches more than one person, FINGER gives you the list of
people.

If the person you specify is not logged in, FINGER tells you when he
last logged out (normally) and prints his PLAN file, if any (see MAIL
program description).  The logout information will not be up-to-date
if he used the "K/F" command or if he quit following a system crash.
*7 Aug 1973	SEND MAIL	BH

If you SEND a message to a display (III or DataDisc) terminal,
the SEND program now examines the monitor tables for that
terminal to try to decide if the recipient is running a program,
such as E, which unnormalizes the page printer, thereby possibly
hiding or losing the message.  If the page printer is not
normalized (any piece of paper or glass other than PP 0 active,
any console commands of the <esc> E, etc., family executed, or
the lines/glitch or glitches/page count not normal), the sender
is warned with a message including the ppn, job name, queue, etc.
This information may help in deciding whether or not to play it
safe by REEentering and changing the SEND to a MAIL.  The only
display program I know of which is not caught by this scheme is
WHO on a DataDisc, but that's not too bad because the message
generally shows up when you exit.

Also, it is now possible to specify an expiration date for
NOTICE.TXT messages by typing the command in the form

	MAIL * → date

where "date" is as in the REMIND command (just date, no time).
The message will be deleted at midnight of the specified date.
This is done by putting a delayed program request for a
program called EXPIRE in the reminder queue with you as the
requestor, so you'll be told about it by CANCEL.  Note that
this feature is independent of the automatic deletion after
two weeks, which happens whether you specify an expiration
date or not.
*13 Aug 1973	RCV	BH
The Z option editor in RCV now allows <ctrl>D at the end of a line to
concatenate it with the next line, and <meta><cr> in the middle of a
line to break it in two pieces, as in E.  In line insert mode, altmode
will leave line insert mode without inserting the text you were typing
on the line with the altmode (unlike <ctrl><cr> which inserts the text
and then leaves line insert mode.)  Also, the editor is cleverer about
ignoring unknown break characters and about neatness of its output on
your display screen.
	Also, there is a new option, ! (exclamation point), which saves
the current message and all remaining messages in the current file, and
then goes on to the next message file.
	Also, when a message overflows the buffer, RCV will break it at
a line boundary (unless the line which overflows is incredibly long),
and you are alowed to edit it with the Z option.
	SINGLE-LETTER TYPEIN (OPTIONS, Y OR N) MUST NOW BE FOLLOWED BY <CR>!
Accordingly, <cr> as an option again means S.  In Y or N situations,
anything other than Y<cr> means no.  (Lower case Y is ok.)  Typing ? in
response to a question still does not require <cr>.
*14 Aug 1973	LOADER and RPG	TVR

Several changes were made to the loader and RPG.

1.  The loader  has been speeded up by separating  globals and locals
within the symbol  table.  The improvement will be noticable to those
who use many externals  while it will  be only marginally faster  for
those using only one REL file.  
    Globals  (i.e.   externals) are  now kept  in the  bottom of  the
symbol  table rather  than  interspersed  with  locals.   This  loses
information  about  with  program  the  global  came from,    however
neither DDT nor RAID  use this information.  It  seems to be a  small
price to pay for the increase in speed.

2.  A feature has  been added to the loader to save a  dump file when
loading is complete.  This is invoked by the  switch /DUMP.  The name
given  the  the  DMP file  is  that  of the  first  REL  files loaded
(excluding DDT) unless one is given explicitely as:

	LOAD BAZ←FOO/DUMP

which loads the file FOO and saves it as BAZ.DMP.

3.   A  new  switch  /NOSAISEG suppresses  the  loading of  the  SAIL
segments  and  instead   loads  from  the  SAIL  library.    This  is
recommended for  programs sept  on  [1,3] as  SAIL segments  tend  to
eventually become obsolete.

4.  RPG  will now accept  negative arguments in loader  switches, for
example: %-S.

5.  The LOADER will now treat % as /.


If you have any  problems,  first try LOADER.OLD[1,3].  If that works
while the new one does not,  please mail me (TVR) a note.
*14 Aug 1973	FIND	DCS

New FIND up.
It is now a system command "FIND".
See FIND.TES[UP,DOC] for complete description.

The syntax has been changed to:

FIND [EXACTLY] key [ [IN] file], where brackets indicate options.

  EXACTLY indicates the keyword search of old FIND -- character
	  for character match, with no template searching.

  Otherwise, the template search will be carried out, as described
	  in the full documentation.  The EXACTLY search is a little
	  faster.

  Default file name is the current phone directory.  The specification
	  PHONE will also yield this directory.

  Unless you are using the default file, if the key is a multi-word
	  key, it must be delimited by " ... " or ` ... ', or separated
	  from the file name by "IN", which is not optional in this case.

  Undelimited multi-word keys will have each string of one or more
	  spaces and tabs replaced by a single space, even in EXACTLY mode.

  You can search for a delimited string with either kind of quote
	  in it by delimiting the string with the other kind (e.g.,
	  " ... ` ... ", or  ` ... " ... '.

  You can omit the closing "]" in a file name.

Examples:

  FIND JMC
  FIND ANY MCCARTHY
  FIND ANY TARGET IN COMLIN.FAI
  FIND ANY "TEMPLATE ... TARGET" COMLIN.FAI
  FIND TARGET BYTE IN COMLIN.FAI
  FIND LOMA VERDE
*14 Aug 1973	PUB XGPUB	RKJ

PUB files may be output on the XGP.

Fonts may be specified by using the FONT declaration.  Its format  is
	FONT <fontid> <fontfilename>
where fontid is a single digit 1-9 or letter A-G (upper or lower case
are equivalent). Fontfilename is the name of the file  on  which  the
font  is  stored.  The  default  extension is FNT, the default PPN is
[XGP,SYS].   The only available device is the disk; no  device  field
may  be  specified.  To  select a font, turn on the character "%" (or
turn on some other character for its function).  %<fontid> causes the
specified  font to be used for subsequent output.   %* has the effect
of undoing the previous font selection (one  level  only).    If  you
specify  XGP  output  (either  by  DEVICE XGP or by /X in the command
string), you must specify at least one font with a FONT  declaration.
Font 1 is used initially.

A font may also be selected in command mode with the command
	SELECT <fontid>
which breaks and selects the font  for  the  next  text  line.   Font
selection obeys block structure.  The effect of %* in the vicinity of
END's which imply font changes is undefined.

For the  benefit of  macros whose  effect depends  on whether  or not
output  is to  the XGP,  there is  a read-only variable  XCRIBL whose
value is TRUE iff output is to the XGP.  FONT and  % are no-ops (FONT
a time-consuming one) if output is not to the XGP.

The variable !XGPLFTMAR  should be set to the  desired left margin in
raster points; its default value is 200.  The variable CHARW is  used
as the  multiplication factor to  convert to  XGP raster units  those
variables (e.g., line  width) which are specified in characters.  Its
default value is 16.

PUB produces  a file  QQXGP.RPG containing  XSPOOL parameters  such
that executing the monitor command
	XS  @QQXGP.RPG
will list your  output properly.   The PUB variable  !XGPCOMMANDS may
be  set to include any  extra switches, etc., you  would like sent to
XSPOOL; the text in that variable will be included in the RPG file.
The XSPOOL command is loaded into your line editor if at a display.

The  following PUB  features  are  not available:  multiple  columns
and  the ∞ feature.  Use of these  will not bomb out but
the results won't be what you wanted, either.

Note: PUB currently takes no notice of font heights.  All  vertical
spacing and vertical filling is done by line count.
*5 SEPT 1973	NETWORK NETWRK TALKER TELNET FTP	RPH
THE PROGRAMS 'FTP'  AND 'T' (TELNET) ON  [1,3] MAY NOW BE  INVOKED BY
SYSTEM COMMANDS:

FTP	RUNS THE PROGRAM 'FTP.DMP[1,3]'
TN	RUNS THE PROGRAM 'T.DMP[1,3]'
TELNET	RUNS THE PROGRAM 'T.DMP[1,3]'

YOU MAY  FOLLOW THE COMMAND  BY WHAT YOU  WOULD NORMALLY TYPE  TO THE
PROGRAM.  THAT IS A SITE  NAME AND THEN  A COMMAND. IF  YOU TYPE MORE
THAN THE SITE NAME YOU MUST FOLLOW  IT BY A ";". IF YOU WISH TO  TYPE
AN ALTMODE TO THE PROGRAM, YOU MAY USE $ (DOLLAR SIGN).
*5 Sept 1973	FONT conversion for XGP (FCOPY)	TVR

FCOPY is a program to convert between different font formats.  It
currently knows about font formats of Stanford, CMU and Xerox.  It
will also give some information about a font, i.e. its height, width,
and its baseline.  It will also print a sample on the XGP which
includes a table showing the correspondence to Stanford ASCII.  It
takes input in the following form:

<command> :: = <output file>←<input file>{/<switch>} |
	       <input file>{/<switch>}
<switch>  :: = INFO|SAMPLE|DISPLAY|FIX=<integer>|STANFORD|CMU|XEROX

FCOPY decides what conversion to make by the extension and may be
overridden with the switches: STANFORD, CMU, and XEROX, where the
default extension are FNT, KST and XRX, respectively.  The default
extension is FNT and if no PPN is given, your area is tried first,
then [XGP,SYS].  Multiple switches are legal.  For example:

R FCOPY;FOO←NGR25.KST/FIX=16/DISPLAY

Converts the CMU font NGR25 and makes a fixed width font called FOO.
The result is display on your terminal (if it is a Datadisc).

Available switches are:

DISPLAY		Display font on Datadisc
SAMPLE		Print sample on XGP
INFO		Print information about file
FIX		Make into fix width font, of specified width.

Report any suggestions or problems to TVR.
*18 Sept 1973	PUB Command in RPG	FW

A "PUB"  command has  been installed  in RPG  which behaves like  the
compile-class commands,   but only for PUB  files.  All compile-class
commands except COMPILE now ignore PUB files as  possible candidates.
Soon COMPILE will not work for PUB  either,  so users should get into
the habit of using the PUB command instead.

RPG  has also been modified  to not require  a closing square bracket
whenever the  thing following  the PPN  is  anything but  a comma  or
identifier.
*25 Sept 1973	PUB Changes for XGP	TES

To repair certain unpleasant  bugs in the PUB font  select mechanism,
it  is  undergoing   a  major  overhaul.  The  main  effect  on  your
manuscripts is this:
	Font selection  will be area-dependent.  That is, if  you say
%1 or  SELECT 1 when you have done a  PLACE HEADING, the current font
will be changed  to 1 only  for the HEADING  area.   When a block  is
exited, the  current font of every  declared area will revert  to its
setting  when the block  was entered.  Font  select controls directed
by PUB  to  the XGP  will  be more  intelligent  as well.  This  will
probably happen  by the end of  October, if not very soon.
	-- Larry Tesler
*28 Sept 1973	FILES command	ME

New monitor command FILES gives you status of open files (just as
the WHO program does) without distroying your core image.  The
command takes any of following forms:

	FILES <job number>
	FILES <filename>
	FILES

The <job number> form prints the name and status of each file open
for the given job, where a zero <job number> means your own job.
The <filename> form prints all the references (by any jobs) to the
given file.

If the argument to FILES is a number in the range of legal job
numbers, then it will be assumed to be a job number.  If it is a
number with three or more digits or is greater than the biggest job
number, then it is assumed to be a filename.  A dot (".") or left
braket ("[") following a number also forces the number to be
interpreted as a filename.  Filenames with spaces in the middle (or
at the beginning) cannot be typed to FILES.  Explicit PPNs will
override the default PPN taken from your current ALIAS.  If the
Programmer part of a PPN is omitted, the Programmer part of your
current ALIAS is used; in this case you must omit the comma in the
PPN.  The closing right bracket ("]") after a PPN (or after a
Project when there is no Programmer) may be omitted.

If there are too many files open to print all their names at command
level, FILES prints as many as it can and then prints "...".  In
this case, if you type just FILES with no argument, the previous
list of file references will continue.

If you give the FILES command with no argument when there is no file
list to continue, then a FILES 0 is done (i.e., files referenced by
your own job are listed).

When FILES is starting a new list of files, a blank line is printed
before the list of files, but when an old list is being continued,
no blank line is printed.  Also, if the complete list is small
enough to be printed in its entirety, a blank line will follow the
list.  Otherwise, "..." is printed after the part of the list that
fits.

The two numbers following a filename printed by FILES are,
respectively, the length of the file and the current pointer into
the file, both in record numbers.  Some letters may follow the
second number and have the following significances:
	W	File is being written.
	R	File is being read.
	RA	File is open in Read-Alter mode.
	E	(after R or RA) End of file has been reached.
*29 Oct 1973	RAID	FW

A few minor fixes and improvements have been made to RAID:

1)	εX and εY now indicate whether the instruction skipped.  This is
	by means of an indicator at the top of the screen,  like the "OK".

2)	Line feed and backslash are now equivalent to greater than and
	less than,  respectively.  This makes moving more convenient since
	it isn't necessary to use the "top" key.

3)	The initial program name selection is now reasonable even when
	RAID isn't loaded first.

4)	Initialization of search bounds is now more clever.  The limits
	are set to include the area from 140 to JOBFF or the bottom of
	the symbol table,  except that RAID itself will not be included
	if it is loaded at either end of that area.

5)	The display now gets refreshed properly when switching from III to
	DD (sometimes a problem with saved core images).

6)	The state of IOT-user mode is now saved and restored,  and turned
	off inside RAID,  so debugging such programs will not execute
	random hardware I/O instructions instead of displaying.  (Note:
	this does NOT mean you can now put breakpoints in spacewar modules
	or user interrupt code.)

7)	RAID now notices if the symbol table moves or changes size,  and
	attempts to do the right thing,  hopefully avoiding dropping dead
	with ILL MEM REFs and whatnot as it used to often do in that case.

8)	The various indicators at the top of the screen have been scrunched
	on Data Disc to single width,  double height,  since double width
	mode is so unreliable.

Note to system hackers:	The previously painful process of putting up the
DMP copy of RAID has been automated by a program called RAIDMP on CSP,SYS.
*31 Oct 1973	LOADER	FW

	Recent changes to the LOADER:

1)	Block names are now loaded only if loading local symbols,  since
	they are of very little value other than for referencing symbols.

2)	The left half of JOBHRL is no longer set up to the length of the
	upper,  since the system puts the write protect flag there.

3)	The /= switch is available for RHT and anyone else who feels
	horribly screwed by having all the globals grouped at the front
	of the symbol table.  The effect is to cause symbols to be loaded
	as they used to,  complete with searching the entire table when
	looking up globals.  This switch may have strange effects if it
	appears after some files have been loaded.
*2 Nov 1973	EDFONT (XGP)	TVR
EDFONT now accepts  characters whose logical  width is less  than its
physical  width, thus better  italics and  non-spacing characters are
now possible.   The following  example shows  the difference  between
logical and physical width.  (See WIDTH.MSG[XGP,TVR] for change in
font file format).  Note:  This is not implimented in FCOPY yet.

                 ***
               *** **
               **  **
              ***  **
              ***
              **
             ***
             ***
           *******
             ***
             ***
            ***
            ***
            ***
            ***
            **
            **
           ***
           ***
        ** **
        *  **
        * **
        ***
                 ↑   ↑
	    Logical Physical
	      Width Width

*19 Nov 1973	XGP (Underline)	REG
Effective with system 6.13/V, the definition of Underscore on the XGP
has been changed.  In particular, the old underscore was positioned
vertically in terms of scan-lines from the top of the text-line.
The new underscore is defined relative to the baseline of the text-line.

This affects users as follows:
	In PUB there is no change; however, a new version of PUB must
be used (which isn't available yet, but which should be ready in a day
or two).
	In POX, the "A" parameter of <escape>ULABR must be changed
to reflect this modification.
	
(See UXGP.REG[UP,DOC])
*29 Nov 1973	E	FW

The ETv and CEtv commands no longer go thru RPG,  thus improving speed and
command options.  Now all command formats legal after R E; are also legal
after ETv.  The extension matcher has been added to E,  as has a command
saver.  The latter,  however,  is different in a few ways:

1)	TMPCOR is used instead of the QQSVED file.  This will eventually
	be the convention for everything,  since it is faster and also
	separate for each job,  eliminating conflicts when  two people
	are working on the same area.  At present,  the RPGSAV option in
	LOGOUT will not preserve this type of file,  but this may get fixed.

2)	The command written in the file is always ET,  since it is rarely
	meaningful to repeat the creation of a file.

3)	The file name written is the actual file name used,  rather than
	the one typed,  so the extension kludge need not be used more than
	once.

4)	The file is actually written twice during an edit.  It is first
	written at the beginning of the edit with the switches in effect
	at that time (presumably what was typed or what was previously
	in the file).  It is written again when exiting with the state of
	the switches at that time.  The most important effect of this is
	that the switches include the page and line number so the edit will
	be resumed at the old location when "ET" is typed.

5)	There is now another entry point for possible use by programs.  Entering
	at the normal entry-1 will re-execute the command in the command
	file.  This is equivalent to starting RPG at the -1 entry for other
	editors.  Note that that feature of RPG will not currently work
	for E because RPG doesn't know about TMPCOR yet.
*3 Dec 1973	LISP	RWW

A new LISP interpreter is up.  The old one is LISP.OLD, and will
still work in all respects.  We expect this version to disappear
within a few months.

MLISP, MLISP2, RLISP, and COMPLR have not been converted to the new
interpreter.  They still operate with the old interpreter, and should
work fine.  Conversion of these systems will be done soon.  For the
present, do not install any systems using this new interpreter, since
we will likely find some bugs, and you'd have to do it again.

See NEWLSP.DCS[UP,DOC] for details on the modifications which have
been made.  They are all compatible with current programs.
*17 DEC 1973	COPY	RPH

New feature in directory command:

	DIR .EXT	is equivalent to	DIR *.EXT
*8 JAN 1974	NEWS	LES

If you say "R NEWS ;<filename>" then the NEWS program will use your file
rather than NOTICE[UP,DOC].
*20 Jan 1974	EDFONT 	TVR

Changes to EDFONT.

1. When there is no  file name is given on αR or αW,  it is asked for
   before the character is asked for.

2. The unusual characters may be specified with  '  followed by octal
   code. This means you can now edit <null>, etc.

3. Three new extended commands:

   XANDSHIFT and YANDSHIFT which correspond to XORSHIFT and YORSHIFT.

   IIIFNT which allows characters to be editted with the light pen.


See EDFONT.TVR[UP,DOC] for details.

*16 MAR 1974	BOOK MODE (/B) in E (BOOK command)	ME

The new /B mode (B for Book) in E provides some new features for
editing files, especially files which are really books in disguise.

1. In /B mode E will never permit you to alter the file you are
editing; you cannot change to READONLY mode or READWRITE mode from /B
mode.  In /B mode, if you change part of a page and try to write out
the new version, E will simply remind you that you cannot alter the
file.

2. To help you keep your place in a book-file you are reading, E
keeps a special psuedo-RPG file on your area.  This file will have
the name <filnam>.BKP, where <filnam> is the primary name of the
book-file.  Note that the .BKP file is NOT an RPG file (although it
is in RPG file format), and thus will never be deleted by LOGOUT.
This .BKP file will contain the page number and line number at which
you were editing the book-file the last time you exited from E.  E
will neither look for nor write a .BKP file unless you have started E
with the monitor command BOOK, which automatically starts E in /B
mode looking for a .BKP file.  Furthermore, when you start E with the
BOOK command, if you specify any of the /L, /P or /R switches, E will
not read or write any .BKP file.  And if you start E with just the
BOOK command without any argument, then unless there already is
a .BKP file on your area, no new .BKP file will be written.

3. The BOOK command with an argument (and without any of the /L, /P
and /R switches) will look for a .BKP file with the given name and
PPN.  If that .BKP file is not found, E will look for the .BKP file
on your current ALIAS area and then on your logged-in area.  If a .BKP
file is found, it is used and updated when you exit.  Otherwise, a
new .BKP file will be written onto your (ALIAS) area when you exit.

4. Whenever you use E in /B mode, it will reference TMPCOR files with
the name BK instead of ED.  Thus you can switch back and forth
between editing some program and reading a book by alternately giving
the no-argument monitor commands ETV and BOOK (provided you have once
given the filenames).  In /B mode, E will display "/B" following the
filename at the top of the screen.

5. When you have finished reading a book-file, E will delete the
<filnam>.BKP file automatically.  E will think you have finished
reading the book if and only if you are on the last page of the file
when you exit.

- - - - -

The complete book WUTHERING HEIGHTS by Emily Bronte is available for
general reading in the file WUTHER[LIB,DOC].  To begin reading it,
simply give the monitor command:

.BOOK WUTHER[LIB,DOC]

Then when you exit from E, the file WUTHER.BKP will have been written
onto your (ALIAS) disk area with the numbers of the page and line
where you were last reading.  To continue reading the file later
during the same login session (and with the same ALIAS as before),
simply say:

.BOOK

which will read in the TMPCOR file BK for your current ALIAS.  When
you exit again, the TMPCOR file and the .BKP file will be updated.

To continue reading after you have logged out and back in, say:

.BOOK WUTHER

which will cause E to find your .BKP file, which itself will contain
the name of the book-file WUTHER[LIB,DOC].

- - - - -

To edit a file in /B mode without having the <filnam>.BKP file read
or written, type any one of the monitor commands:

.ETV <filename>/B
.BOOK <filename>/nP

where <filename> is the name of the file, including any extension and/or
PPN, and n is the number of the page you want to start on.  The /nP
inhibits use of any .BKP file; the BOOK command starts E in /B mode.

- - - - -

Direct any bugs concerning BOOK to ME.

*8 APR 1974	FAIL changes	REG

This is a quick summary of some recent changes to FAIL.  These are more
completely described in FAIL.REG[AIM,DOC] - which will soon be printed.

Command line switches:
	F - don't stop on error.
	V - set listing page length.
	Q - obsolete, deleted
Command line changes:
	= is accepted in lieu of ←
	+ or ; accepted in lieu of , as a separator between source file names
	a comma at the end of the line following a source file name means
		that the command is continued on the next line

New Pseudo-ops
	.LOAD
	.LIBRARY
	.INSERT
	XPUNGE
	PURGE
	SUPPRESS
	ASUPPRESS
	UNIVERSAL
	SEARCH
	PRINTX

New conditionals
	IFMAC
	IFNMAC
	IFOP
	IFNOP

Changes in condtionals
	IFAVL	True if a symbol is defined and available
	IFNAVL
	IFDEF   True if a symbol is defined (not necessarily available)
	IFNDEF


Other features/changes
	OPDEFS get added to the symbol table even if redundant
	LIT implied by END is XLISTed
	Invented block names start at A.001 instead of A.000
	Doesn't skip TV/E directory.
	If no extension is given for the input, FAI is tried
		 first, then blank.
	File names are typed out when they are looked-up.
	The following characters are illegal as delimiters in ASCIZ,
		COMMENT, etc:  ":" "←" "↑" "~" and "#".

Bug fixes
	TMPCOR feature fixed
	ITS version: GETSYS bugs fixed
	Error messages don't get confused by litlabs (or when FAIL restarts)
	Symbol table fixups for litlabs in inner blocks fixed
	Command files that don't end with a crlf fixed.
	MOVE↑: now defines MOVE an internal label.  (Works for any opcode)
	The first character of the second and subsequent files now gets listed
		properly.

Internal changes
	Various documentation and format changes in the source files
	Symbol table ascii dump code (/Y switch) conditional assembly
*14 Apr 1974	Font Sampler	TVR

The program  SAMPLE  generates samples of *ALL* fonts on a particular
disk area automatically.   Its operation is self-explanatory  and may
be invoked by typing:

R SAMPLE

Please note:
------ ----
If you want a sample of the fonts on [XGP,SYS] (the system font area)
it is strongly suggested that you obtain a Xerox copy from one of the
secretaries,  as there are more than 60 fonts on [XGP,SYS] and making
a sample involves a lot of system overhead.



Below is a sample sample:


FIX25.FNT[TMP,TVR]
Total Height = 25	Height above baseline = 20	Depth  = 5

FIX25
   	CMU  4	16X25 FIXED CHARACTER SET


     ↓    α    β    ∧    ¬    ε    π    λ                             ∞    ∂    
⊂    ⊃    ∩    ∪    ∀    ∃    ⊗    ↔    _    →    ~    ≠    ≤    ≥    ≡    ∨    
     !    "    #    $    %    &    '    (    )    *    +    ,    -    .    /    
0    1    2    3    4    5    6    7    8    9    :    ;    <    =    >    ?    
@    A    B    C    D    E    F    G    H    I    J    K    L    M    N    O    
P    Q    R    S    T    U    V    W    X    Y    Z    [    \    ]    ↑    ←    
`    a    b    c    d    e    f    g    h    i    j    k    l    m    n    o    
p    q    r    s    t    u    v    w    x    y    z    {    |    }    }        


The Xerox Graphics Printer (XGP) provides a means of making a
hardcopy listing of virtually any drawing that can be expressed as a
one-bit raster.  The XGP accepts as data a bit array describing each
scan line that is printed.  Each scan line is approximately 1700
bits; scan lines are spaced at about 200 per inch along the paper. A
picture is built by sending successive scan lines to the XGP.
*22 APR 1974	FAIL changes (continued)	REG
1. JFOV added
2. XLIST now prints itself
3. FATAL End of File... now has more information about where the
   text pseudo-op, macro argument list, literal, etc. that didn't
   terminate got started.  (Includes the file name.)
4. .FNAM1, .FNAM2 predefined symbols have been added
5. Various bugs in FAIL output to CREF have been fixed.
*22 MAY 1974	FILE PROTECTION DSKPRO	REG
File Protection		Stanford 6.16/J (and later)

Highlights:

a.	Protection of files and directories are separate cases.
b.	The category "same programmer, different project" has
	been eliminated.  The category "others" have been changed
	to "other local users" and "other remote users".
c.	A remote user is a user of any non-local terminal, i.e.,
	arpanet, dialup, or campus terminal.  Exceptions are
	made in some cases for users who are known to us, who
	have applied for the local user privilege and who guard
	that privilege with a password.
d.	A local user is any user who is using a local, i.e., in this
	building, terminal.


File Protection bits
	400	ignored by system	(Dump never in DART)
	200	ignored by system	(Delete protect in COPY)
	100	Write Protect		from owner
	 40	Protection Protect	from local users
	 20	Read Protect		from local users
	 10	Write Protect		from local users
	  4	Protection Protect	from non-local users
	  2	Read Protect		from non-local users
	  1	Write Protect		from non-local users

Protection bits  (ufds)
	400	ignored by system	(Remote-only password in LOGIN)
	200	undefined
	100	ENTER protect		from directory owner
	 40	Protection Proect	from local users
	 20	Read/LOOKUP Protect	from local users
	 10	ENTER Protect		from local users
	  4	Protection Protect	from non-local users
	  2	Read/LOOKUP Protect	from non-local users
	  1	ENTER Protect		from non-local users

Changes to uuos

LOOKUP	MFD	legal
LOOKUP	UFD	legal if permitted by UFD protection
LOOKUP	FILE	legal if (permitted by UFD protection READ)
		AND (permitted by file protection READ)

ENTER	MFD	illegal
ENTER	UFD	illegal except for LOGIN and only to make a new file
ENTER	FILE	legal if (permitted by UFD protection WRITE)
		AND (permitted by file protection WRITE if file already exists)

Change protection of file:
RENAME	MFD	illegal
RENAME	UFD	legal for directory owner. LOGIN provides
		a means for doing this (see below)
RENAME	FILE	legal if (permitted by UFD protection PROT)
		AND (permitted by file protection PROT)

Change name of file:
RENAME	MFD	illegal
RENAME	UFD	illegal except LOGOUT can delete empty directories.
RENAME	FILE	legal if (permitted by UFD protection WRITE)
		AND (permitted by file protection WRITE)


Default protection:

If the protection specified in an ENTER is zero, the file will be given the
protection found in the default-protection entry in the UFD, except, if the
file already exists, the protection of the old version will be passed to the
new version.

LOGIN modifications:

When the delimiter between the project name and the programmer name
is %, LOGIN will allow the user to change his password, the UFD
protection, and the default file protection.
*24 May 1974	REMOTE LOGINS	BH
Effective 1 June 1974 the Remote User's Password will no longer be used
for remote login.  Instead, remote login will not be permitted unless
the PPN specified to LOGIN has its own password or is NET,GUE.

So that local users who occasionally log in remotely need not type a
password every time they log in locally, it is possible to declare that
the password for your PPN should be considered "remote-only": you will
only be asked for it from a remote terminal.  To do this, turn on the
400 bit (not used by the monitor) in the protection code of your file
directory.  (If you log in using % as the delimiter between your
project and programmer names, you are given the opportunity to change
your password, the protection of your directory, and the default value
of the protection code used for new files created in that directory.)

The COPY program, which also uses passwords to control file access,
will also interpret the 400 bit in the protection code to skip the
password check for local users.

A remote user is one who is logged in from the ARPA network, from the
dial-up dataphone lines, or from terminals on campus.
*26 May 1974	News Service--NS	ME

A new News Service system has replaced the old AP news system.  The
new system currently has available only Associated Press news but we
are negotiating with various other wire services and may add one or
more to the AP wire we have now.

The News Service user program is invoked by the system command NS.
This command runs the NS program with some privileges that it needs.
Any system command that attempts to change the core image of the NS
program or that attempts to change the job's disk ALIAS will also
take away the temporary privileges, thus preventing NS from working.
This means, among other things, that if you change your ALIAS after
starting NS, then you will have to restart it with another NS
command.

The new news system is documented in the file NS.ME[S,DOC].  The most
significant features of NS are: categorization of every story by
every non-trivial word (that is, except for very common words like
"the", "and", etc., every word is now a keyword); retention of the
news for more than just one day (the exact length of time for which
we will retain each day's news has not yet been decided, but it will
be kept for at least a week); and display-oriented presentation of
the news (terminals other than Stanford displays will still type out
the news).  Currently, news is available from 13 May 1974 on.

The new system is not quite complete and lacks the following
features, which will be implemented soon: automatic notification
(requests still in the old system will not be carried forward into
the new system); outputting news to files and to the spooler; and
suffix removal for keywords.

The program HOT will still type out the news as it comes in.
*28 May 1974	News Service--NS--HOT	ME

The hot line program for the new News Service system can
now be run only with the new monitor command HOT.
*1 JUN 1974	NETWORK MAIL	BH

The MAIL command now allows mail to be sent to users at other ARPA
network sites.

(This service is not available to network guests, sorry.)

Since the "@" character was already used in MAIL to specify a file
to be read for command arguments, the character "%" is used to
signify ARPA site names, e.g., BH%SU-AI not BH@SU-AI.  Site names
can follow a user name, as above, or can be used alone (followed by
a space) as a "sticky" site:
	MAIL %MIT-AI RG,TK,MINSKY,BH%SAIL,PAPERT
will send the message to RG, TK, MINSKY, and PAPERT at MIT-AI, and
to BH at SAIL.  (Of course, if SAIL is used as the site name the
mail is not actually sent through the network!)

User names for foreign hosts can be of (essentially) arbitrary length.
If the name is a string of letters and digits starting with a letter,
it can simply be typed as is: TEITELMAN % MAXC for example.  (The case
of letters is preserved, in case it matters to the foreign host.)  If
the user name contains characters other than letters and digits, or
starts with a digit, enclose it in quotes (") with two quotes used to
represent a single quote if necessary.  The host name cannot contain
any special characters except hyphen.  Partial site names are recognized
as in our TELNET and FTP programs.  Also, a decimal number may be used
instead of a host name if necessary.

If the destination list in a MAIL command includes PPNs at SAIL (which
must be enclosed in square brackets), SAIL is assumed as the destination
host and should not be specified explicitly, e.g.,
	MAIL %AI [1,BH],TK
mails to TK at MIT-AI and [1,BH] at SAIL.  To mail to a PPN somewhere
else, you must say, e.g.:
	MAIL "[N900AR00]"%CMU

The outcome of an attempt to send network mail is reported to you, in
a format somewhat like SNDMSG in TENEX.  The possible outcomes are
	USER at SITE -- ok
	USER at SITE -- refused
	USER at SITE -- failed
	USER at SITE -- queued
The first case means that the mail was successfully sent.  The second
means that the network connection was made successfully but the MAIL
command was rejected, possibly because there is no such user at that
host.  "failed" means that the network connection was unsuccessful,
perhaps because they are down, and the mail could not be queued.  The
queueing system for network mail is described in a later NEWS entry.

Usually if the mail is refused, and possibly otherwise, the remote host
will send us error messages intended to be helpful to you.  If any such
messages are received which are not part of the normal MAIL sequence,
they are typed out along with the status report.  Thus you can hopefully
figure out why the mail was refused.  If you get "refused" with no
explanation, or see messages which seem like part of the normal
sequence (e.g., "mail successfully completed"), please save the relevant
information and send me (BH) a note about it.

Mail to foreign hosts is prefixed with a TENEX-ish header including your
real name, if known to the system, and your net address (PRG @ SU-AI).
Thus recipients should be able to figure out how to reply.

Distribution list files as in MAIL @FILE can, naturally, include
network destinations.  The /D switch, which includes the list of
addressees in the message, includes network addressees, as typed
(e.g., with abbreviated site names if that's what you typed).  The
message header as sent to each net addressee has his site name
in full, with his user ID as you typed it.

It is possible to get the system somewhat confused by interrupting
the execution of network MAIL at the wrong time.  The symptom will
be that thereafter any attempt to do network mail by the same job
will get the "failed" return very quickly.  If this happens to you,
please let me know the exact details--if possible, find me right
away.  I believe this is a system bug, but I'm not sure.
P.S.--I now believe that this will never happen anymore, but not sure.
*4 JUN 1974	NETWORK MAIL QUEUE	BH

The network mail feature in the MAIL command can now queue up mail to
a remote site if it is unable to complete the network connection when
you make the request (remote host down, etc.)  The mail is queued via
the REMIND phantom.  The status report when you give the MAIL command
will be
	USER at SITE -- queued
The mail will be retried at three-hour intervals for three days.  If
it is sent successfully, or if the three days run out and the request
is deleted, you will receive a status report from the REMIND phantom,
in the form of a reminder from yourself saying
	ARPA network mail to USER at SITE -- ok
if successful, or
	ARPA network mail to USER at SITE -- expired
if not.  The date and time in the header of this status report will be
the time when the message is actually sent successfully (or deleted).
The date and time in the header of the message sent to the remote site
is the time when you originally tried to send the message.

The CANCEL command lists ARPA mail which you have queued and allows
you to abort the request.  The listing by CANCEL contains the text
of your message and the name of the addressee, but lists his site by
number rather than by name.  It also specifies the number of attempts
remaining before the request will be deleted.

It is still possible to get the "failed" status report from a network
MAIL command if the program is unable to enter the request in the
REMIND queue, for instance because there are no job slots available
for the phantom.  In this case you must try again later yourself.
(You can save the text of a long message you have typed in by giving
the monitor REENTER command after MAIL exits and redirecting the
mail to yourself.)

Please report problems to BH.
*6 JUN 1974	PTYJOB	JBR
PTYJOB now allows you to send control and meta characters to the job
being controlled by the PTY.  If you type meta-M then all further
characters except ctrl-meta-M, meta-Z and ctrl-meta-Z are sent through
unchanged.  Type ctrl-meta-M to get out of this mode.  Meta-Z and
ctrl-meta-Z act as quote characters at any time.  See NET.JAM[UP,DOC]
for a complete description of the operation of PTYJOB.
*7 JUN 1974	TELNET,PTYJOB,DIAL	JBR
New command Meta-F or control-meta-F extends the last file used for
output.  If there was no last file it asks for a file to extend.
See NET.JAM[UP,DOC] for complete operating instructions.
*14 June 1974	News Service--NS	ME

Several new features have been added to NS.  Complete details of
these features are available in the documentation file NS.ME[S,DOC].

1. The command switches /OUTPUT, /SPOOL and /XSPOOL have been
implemented.  /SPOOL spools the stories in your current story list on
the line printer.  /XSPOOL spools them on the XGP.  /OUTPUT writes the
stories into a file which you can designate by following the switch
with a filename, e.g.,

	/OUTPUT FILE.EXT[FOO,BAZ]

If the filename is omitted, the file NS.NS on your current ALIAS disk
area is used.  If the extension is omitted, .NS is used.  If the
output file already exists, you will be asked whether it should be
replaced or extended or the output aborted.  You can get one of these
three actions taken automatically if the file already exists by
following the filename with one of the switches /REPLACE, /EXTEND,
and /ABORT, e.g.,

	/OUTPUT FILE.EXT[FOO,BAZ]/EXTEND

See the section "Output Files" in NS.ME[S,DOC].

2. Decimal arguments are now allowed with the six display commands
"U" & "I" (stories), "J" & "K" (parts) and "M" & "," (frames).  For
example "9U" will move forward 9 stories and "6M" will move forward 6
frames.  When a (non-zero) argument is used with one of these
commands, NS will not move beyond the last frame, part or story of
the current part, story or list; if, for instance, the current story
has 4 parts and you are looking at the second one, "99J" is the same
as "2J".  If you are looking at the last frame of a part, "5M" will
not do anything, although "M" by itself would go on to the next part.
See the section "Display Commands" in NS.ME[S,DOC].

3. The extended display-level command DPART has been implemented.
This command deletes the currently displayed part from the current
story list.  See the X display command at the end of the section
"Display Commands" in NS.ME[S,DOC].

4. Multiple word keywords such as "LOS ANGELES" can be used in
keyword expressions.  The interpretation of such multiple word
keywords is exactly that which would be made if the individual words
of the keyword were separated with stars (*'s) instead of spaces.
That is, "LOS ANGELES" is treated the same as "LOS * ANGELES"; and
"NIXON LOS ANGELES" is treated the same as "NIXON * LOS * ANGELES".

5. On display terminals, ESCAPE I will now interrupt any of the
following:

   a) Making headline story.
   b) Outputting stories to a file (whether for spooling or not).
   c) Evaluating a keyword expression for two or more days of news.

When such a manual interruption is made, a message to that effect is
typed out and automatic reading from any command file is suppressed.

This type of interruption is not currently available on non-displays,
but it may be implemented soon through a similar mechanism.

6. When starting up, NS tells for how far back in time news is
available.  The /DATES command switch also gives this information
in addition to typing out your current date range.

7. If a decimal number K appears in a keyword expression as the
SECOND argument of any operation, then that number represents the K
most recent stories of the other (first) argument of the operation.
For example, "NIXON * 10" represents the 10 most recent stories that
mention Nixon.

If a number K appears as the FIRST argument of an operation, or as
the only term in a keyword expression, then that number represents
the most recent K stories in the news.  For example, "8 * NIXON"
represents, of the latest 8 news stories, any that mention Nixon;
and "5" represents the latest 5 news stories.

8. A blank command line no longer causes NS to go to display level.
The new command switch /PRESENT, abbreviated /P, puts NS into display
level for presentation of the news.

9. On non-display terminals, the default number of lines of headline
story allocated for each story in the current story list is now one.
See the section "Headline Stories" in NS.ME[S,DOC].

10. On non-display terminals, stories shorter than about 6 lines are
no longer broken into two frames.

11. No headline story is made automatically when there is only one
story in your current story list.

12. On displays, a double arrow (↔) marks the middle of the display
screen for indicating where text will move to with a frame command.

13. When awaiting a command line to be typed in, NS now types out
"*KEY: " instead of just "*".
*28 July 1974	FCOPY - Font conversion	TVR

There is a new version of FCOPY up. FCOPY now knows about both  kinds
of  kerning.   MIT  font  format  has been added to the formats which
FCOPY will convert.  Since MIT is a superset of CMU format, MIT  font
files  will have a default extension of KST.  If one wants to convert
to MIT format, the switch /MIT must be given so that FCOPY  will  put
in the kerning information.

There are two new switchs, /TTYPIC and /DEBUG.  TTYPIC types out each
character on your console as it converts. /DEBUG  prints  the  width,
raster  width  and  left  kern of each character, and other debugging
information.

In addition, a number of bugs have been fixed and FCOPY now tells you
which  character  the  system  font  compiler  rejected when you do a
sample.
*31 July 1974	News Service--NS	ME

Some new features have been added to NS.  Complete details of these
features are available in the documentation file NS.ME[S,DOC].

1. Suffix removal is now done automatically before words are used to
categorize or retrieve stories.  The only suffixes removed are: -S,
-ES, -ING, -ED and -LY, but these suffixes are removed in all their
forms.  For instance, when a letter is doubled before adding -ING or
-ED, the doubled letter is removed along with the -ING or -ED.  And
suffixes formed when a final -Y is changed to -I before adding -ES or
-ED are correctly removed.  The same suffix removal is applied to
keywords typed in by the user.

2. At display level, an attempt to advance to the next story when you
are already looking at the last story will cause the program to leave
display level and ask for a command expression next.  The same thing
will happen if you try to back up to the previous story from the
first story in the list.  Also, Stanford display terminals will show
"DL" in the middle of the header line at the top of the screen
whenever the program is at Display Level.

3. NS now keeps track of the stories you have seen.  When a new
keyword expression is evaluated, any stories found that you have
already looked at are removed from the new current story list.  The
number of stories so removed is reported along with the number of
other stories found.  To inhibit this removal of stories already seen,
use the new mode switch /AGAIN to change from the initial /-AGAIN
mode (either temporarily or permanently).  When a new part (follow-up
story) is added to a story already seen, the whole story is then
marked as unseen so that you can access the new part.

4. The command switch /UNSEEN will cause NS to think you have not
seen any stories yet.  See 3 above.

5. In a headline story, the default number of lines allocated to each
story is now two.

6. The new command switch /FRAME has been added to allow users to set
the size (in lines) of story frames typed out in teletype mode.  The
size should be included as the argument to this switch, for example
"/FRAME=15".  Each story typed out will then be broken up into frames
of the specified size, except for the first frame of each story,
which will always be five lines long.  The purpose of having a
settable frame size is to allow users of display terminals (at
Stanford or elsewhere) to have the typeout stop before unread parts
have gone off screen.  Note that if you use a frame size too small,
the maximum number of frames possible will be generated and the last
frame will contain more than the number of lines you have specified.
*16 Aug 1974	VODER Service - Voice Synthesizer	REG

The voice synthesizer (VODER) has device name VOD.  Mode 10 (octal)
is the only legal mode.  The buffer size is 20 (decimal) data words.
The data in the user's buffer is sent directly to the voder.

The Voder interface interprets each word as four 9-bit bytes.  The
400 bit of each byte is the valid bit. The other eight bits represent
a phoneme.  Care should be taken to avoid the phoneme with value zero,
because this will cause the voder to stop, and the rest of the buffer-full
will not be transmitted until later, and data may become lost.

For a description of the correspondence between phonemes and byte-values,
see section 21 of the facility manual, FACIL.TED[H,DOC]

DEVCHR of VOD is DVOUT and a bit for mode 10.  There is no special DEVCHR
bit for the voder.  Only the UUOs  OPEN (and INIT), OUT (and OUTPUT),
CLOSE and RELEAS are valid for the voder.  LOOKUP, ENTER, RENAME, and MTAPE
are no-ops.

*19 Aug 1974	TELNET, PTYJOB, DIAL	JBR
Control-meta F now asks for a file name to extend rather than
extending the last file you were writing (which is what meta-F
does).
*21 Aug 1974	MAIL APPEND	BH

The MAIL command now takes the /A switch to append the new message
to the most recent message from you to the destination.  If there
is no such message in his mail file, a new message is created as if
the /A switch had not been used.  If you specify more than one
destination, the right thing is done for each destination
individually.  Needless to say, this feature does not work for
network mail!  (But nothing bad happens, it just ignores the switch.)
It also doesn't work for MAIL *.

The message to which your text is appended is the first one found
in the message file for which the programmer name of the sender
(as shown in the message header) is the same as your login
programmer name.

Note: Many people leave old messages around in their mail files but
never actually look at them again.  This feature is used at your
own risk.
*4 Sept 1974	News Service--NS--HOT	ME

The New York Times News Service news is now available from NS and
HOT.  To read the incoming AP news, type the monitor command
"HOT;AP" or just "HOT".  To get the NY Times news, type the monitor
command "HOT;NY" or just "HOT;".  HOT will type back the name of the
news wire it is giving you along with the last few lines of news that
have come in over that wire.  After HOT has started, you can switch
from one wire to another at any time by typing a carriage return.

A new NS is up featuring the availability of New York Times news.  To
give the user the choice of what combination of AP and NY Times news
he wants, two independent mode switches, /AP and /NYT, have been
added.  In /AP/NYT mode (which is the default), both wires are used
as news sources.  The mode /-AP inhibits retrieval of AP news and
mode /-NYT does similarly for NY Times news.

In addition, two new time switches have been added to supplement the
date switches.  The time switches allow you to specify the time range
for which stories are to be retrieved within your date range.  This
feature is especially useful if you read the news more than once on a
given day and do not want to see the same stories twice.  To set the
beginning time of the time range, say /AFTER followed by the time you
want.  To set the ending time, say /BEFORE followed by the time.  Thus
if you have read the news earlier at (say) 11am, then "/AFTER 11"
will prevent NS from presenting any stories that came in before 11am
except for stories that have had a new part added to them after 11am.
Almost any format can be used for the time specification, provided no
spaces occur in the middle of the time.  For instance, all of the
following are legal and mean 1pm: 1pm, 1p, 100p, 100pm, 1:00p,
1:00pm, 13, 1300, 13:00.  The time specifications "12am" and "12pm,"
being somewhat ambiguous, are not permitted: use 0 or 24 for midnight
and 12 for noon.  For more details, see the section on THE TIME RANGE
in NS.ME[S,DOC].
*5 Sept 1974	RCV SOS mode	BH

RCV now has a mode, for use at non-Stanford terminals etc., in
which it accepts tty input in SOS representation.  The main
impetus for this is to permit ?* instead of ∂ for redirecting
messages to another mail file, but it can also be used with the
append option to allow appending upper/lower text from an
upper-case-only terminal.  The following notes apply:

1.  When RCV is started, it decides whether or not to use SOS
representation on the basis of the FCS (full character set) bit
maintained by the monitor.  This bit is set by the TTY FULL
command (or <escape>F at a Stanford display) and cleared by
TTY NO FULL (or <break>F).

2.  Whenever RCV reads an altmode character from the tty, it
will enter SOS mode and otherwise ignore the altmode, except
that if you are already in SOS mode the sequence ?<alt> will
leave that mode.  (If you are not in SOS mode, of course, the
? will be taken as a real ? and the <alt> will enter SOS mode!)

3.  These comments apply even to the original command line,
although the monitor will echo a crlf after the altmode to
confuse you.  Note that if your FCS bit is off and you want
to invoke the RCV feature which types a user's plan file,
you must say RCV ??PRG instead of RCV ?PRG as usual.

4.  Under no circumstances is tty OUTPUT done via SOS
conversion.  I hate seeing all those question marks!

5.  If you are in SOS mode and type ? followed by a character
which is not defined as an SOS code, the character will be
treated, and echoed, as ascii 7; this will ring your tty's
bell if it has one, give an error message if you are responding
to an option request, and insert a π in your message if you
are appending.
*13 Sept 1974	News Service--HOT	ME

HOT now types out the AP news and the NY Times news simultaneously on
displays.  The user can, however, disable this feature and have his
display treated just like a non-display.  Users of non-displays can
still select the wire to be typed out and can switch between wires.

The following commands are now accepted by HOT.  The commands that
are meaningful only when typed on displays are so indicated.  The
notation <cr> means Carriage Return.

 COMMAND          EFFECT

 [ESC] I	  Redraw news text and titles. (Displays only.)
 EXIT <cr>	  Exit.
 DISPLAY <cr>	  Display both NY Times and AP news. (Displays only.)
 NYT <cr>	  Type out NY Times news only.
 AP <cr>	  Type out AP news only.
 <cr>		  Change news wires. (In non-display mode only.)
 HELP <cr>	  Present this list of commands and meanings.
 ? <cr>		  Same as HELP.

Each command may be abbreviated to one character.  Also, on displays
that one character need not be followed by <cr> if <CTRL> and/or
<META> is held down when the character is typed.  For instance,
<CTRL><META>E will exit.

The HOT monitor command is used to start up the HOT program.  The
commands above may be given in the monitor command line by typing
"HOT;" immediately followed by the command desired.  For example,
"HOT;NYT" will start up HOT in non-display mode typing out only the
NY Times news, and "HOT;?" will start HOT in normal mode but make it
present the command list.
*22 Sept 1974	INIT Login option	SGK

The option INIT (LOGIN: in OPTION.TXT) now exists.  It runs the file
INIT.DMP on your area after you have logged in.  This allows you to
have a personal INIT file run each time you log in without the
overhead of going thru LOGRUN.  Another disadvantage to using LOGRUN
is that it puts stuff in your input buffer, which is incompatable
with typing ahead.

The LOGRUN option takes precedence over INIT which takes precedence
over the PORNO option.

No claim is made for the spelling herein.  Bugs, comments to SGK.
*27 Sept 1974	Dired	SGK

Dired is a display oriented file management program.  It is a
'directory editor'.  Its command language is very much like E's.  It
displays your files on your screen (one to a line), sorted by name,
date, or size.  Files may be deleted, and even 'undeleted' (before
Dired is exited).  Commands are provided for switching between Dired
and E in both of the programs.  The commands ? and /HELP display
short descriptions of most of the commands.  The monitor command DRD
starts Dired.

See DIRED.SGK[UP,DOC] for more information.
*29 Sept 1974	Subject Line in Network Mail	BH

For those misguided souls who want their network mail to be compatible
with the TENEX READMAIL program, it is now possible to include a
subject line in the message header by using the /T switch in the
MAIL command (for Tenex, or Topic if you like).  This switch takes
the first line of text in the message as the subject line, and also
forces multi-line input (as if the command line ended with lf instead
of cr).  Thus the input command
	MAIL/T TESLER%MAXC Horrible PUB problem<cr>
	I tried to run PUB and this is what happened:...
	...
	<control><meta><lf>
will produce a message like this:
	Date: 29-Sep-74  1:55 PM
	From: Brian Harvey (BH @ SU-AI)
	Subject: Horrible PUB problem
	To:   TESLER @ PARC-MAXC
	- - - -
	I tried to run PUB and this is what happened:...
	...
	-------
If the text input is from a file, the first line of the file will be
used as the subject.  If local (SAIL) destinations are included in
the command, the message as received locally will be:
	∂29-Sep-74  1358	1,BH
	 Subject: Horrible PUB problem
	 I tried to run PUB and this is what happened:...
	 ...
If a network mail attempt fails and a FAILED.TXT file is written,
it will contain:
	Horrible PUB problem
	I tried to run PUB and this is what happened:...
	...
A later command of the form MAIL/T TESLER%MAXC @FAILED
will therefore do the right thing.

If a network mail attempt fails and is queued, the message as listed
by the CANCEL command will not contain the subject line, but it's
really there, fear not.
*4 Oct 1974	MAIL to random files	BH

It is now possible to use MAIL to add a message to any file of your
choice, not just the standard message files.  For example, one
application which was suggested to me was a diary file.  The command
syntax is
MAIL :<filename> <text>

The message may also be sent to other, standard destinations, but
only one nonstandard file may be specified, i.e., you may say
	MAIL BH,:FILE,LES MESSAGE
but not
	MAIL :FILE1,:FILE2 MESSAGE

The file must be on DSK.  Any filename, extension, and PPN may be
specified.  The default extension is .MSG and the default PPN is
your current alias.  All the usual switches, etc. may be used.
*8 Oct 1974	News Service--NS	ME

A new version of NS is up with a revamped command structure and
several new features including searching the current story list.
Perhaps the most important new features is NS's self-documentation.
Almost all the information you may need in order to use NS is
available from NS itself, but here are the highlights.

The main change to NS involves the command structure.  There are no
longer two different "levels" of commands to NS (formerly there were
keyword level and display level).  NS now accepts any command in any
command line.  The first character in a command line (the "command
character") determines the command.  The six main old "display
commands" (UIJKM,) are now command characters; they do just what they
used to do.

The primary effect this command structure change has on the user is
that keyword expressions must now be preceded by a space.  Old
command switches have been replaced with mnemonic commands using the
command character colon (:), for examples, :DATES<cr>.

The self-documentation of NS is invoked by typing ? optionally
followed by a subject on which you want help.  To further explain new
features, a "notice of the day" feature has been added which causes
NS to display the current NS notice, if any, when starting up.

Also, any characters following the NS in the monitor command which
starts up NS are treated as the first command line.

NOTE: Complete documentation of NS is in the file NS.ME[S,DOC].
*11 Oct 1974	MAIL--APPEND TO FILE	BH

By popular demand (somebody asked for it), the feature of MAILing to
nonstandard files has been extended so that a message may be appended
to a file instead of apbeginninged.  To wit, a destination of the form
&<filename> is just like :<filename> except that the message will be
put at the end of the file rather than the beginning.  Only one
nonstandard file destination may be used, as before, whether
with : or with &.  One might like to think of "&" as mnemonic for
string concatenation.  (In case anyone is interested, ":" was meant
to be mnemonic as an abbreviation for "DSK:".)
The /A switch (MAIL/A) does not affect a destination with & although
it does affect one with : .
*14 Oct 1974	MAIL - E SWAP FEATURE	BH

When typing a multi-line message into MAIL from a Stanford display
terminal, you can automatically start up E editing the message, as
typed in so far; then when you are happy with it, automatically
restart MAIL to send the message.  Here's how:

While typing in the message text, type <control><meta>E (at
the end of the line editor).  This will store your message
in a file named MAIL$E.TXT and start E editing this file.

When you are done editing the message, type <control>XRUN to E.
This will restart MAIL, which will send your message and delete
the MAIL$E.TXT file.
*14 Oct 1974	SAIL -- SAISG8 version.	RHT




                     SAIL Changes, New Features
                  Compiler Version 16, Segment SAISG8

                    R. Taylor, J. Reiser, R. Smith

                           October 18, 1974


        The new version of  SAIL should present relatively  few changes

and  inconveniences  for  the  user.   There  are  no   known  language

incompatibilites.  Unfortunately, it will be necessary to recompile all

.REL files (including  load modules and libraries)  for use of  the new

SAIL.

        The main reason for bringing up a new SAIL is to accomodate the

new debugger that John Reiser has written.  Thus, the new  compiler has

features that allow the compilation to include the semantic information

about the program necessary for the debugger.  A few changes  have also

been made to the runtime system to accomodate the debugger, chiefly the

change  in the  break table  features, described  below.   The debugger

itself will be available in several weeks.

        A  few other  changes have  been made  that the  user  may see.

These are described below.

                          CLOSE Inhibit Bits

        The CLOSE function now has an additional optional argument that

allows the CLOSE inhibit bits to be turned on.  The second  argument is

the bit pattern for the inhibition, and it is defaulted 0.  See the UUO

manual for details.

        This feature is available  only at SU-AI, and is  not available

in the TENEX version.

                           TYPEIT Array type

        The number returned  by the TYPEIT procedure  (which identifies

the type of the datum  of its item expression argument) is  now changed

for arrays.  Now  it is '24  plus the scalar  value of the  type (e.g.,

INTEGER), whereas before it was '15 plus the scalar value.

        Additional types added to TYPEIT are:  '16 for labels,  '17 for

record classes.

                       Comparison of .REL Files

        Starting with version  18, the compiler emits  information into

each  .REL file  containing the  version of  the compiler  used.  Then,

during the SAIL  initialization sequence, these versions  are compared,

and a  warning message is  issued if necessary.   Thus, the  problem of

converting  from  one version  of  the  compiler to  a  new  version is

lessened.  This feature may not work as well in the  current changeover

as it will in the future.

                          SCAN Optimizations

        The SCAN function has  been modified to return  true substrings

instead of copies in those  cases that the break table in  question was

not  omitting any  characters.  This  should be  an improvement  in the

efficiency of those routines.

                             BREAK Tables

        There are  now 54  user-setable break  tables available  to the

SCAN, INPUT, TTYINL functions, as well as SETBREAK and BREAKSET.  These

tables are allocated and deallocated dynamically.

        In addition,  GETBREAK now  returns the  value of  the smallest

unallocated breaktable, and RELBREAK releases its table  argument.  The

implicit declarations of these new runtime routines are:

                      INTEGER PROCEDURE GETBREAK
                   PROCEDURE RELBREAK(INTEGER TABLE)


NOTE:   a  breaktable is  allocated  by either  GETBREAK,  SETBREAK, or

RELBREAK.  A breaktable is de-allocated (and thereby made  available to

GETBREAK) by RELBREAK.  Breaktables are  stored in groups of 18,  so it

is more efficient to use all  the tables in a given group  before going

to another group.  The use of GETBREAK is particularly  recommended for

load-modules and the like, so that conflicts will be minimzed.

        HACKERS:  Actually there  are 18 additional  system breaktables

which are reserved  for use by the  SAIL runtime system.   These tables

are numbers  -17 through  0, and  are ordinarily  not available  to the

user.  They will be used by the debugger and by additional  SAIL system

software.

        The  user can  obtain access  to breaktables  -17 through  0 by

setting BRKPRV(USER),  for example by  the USERCON  function.  WARNING:

absolutely  no  guarantees are  made  to the  user  who  accesses these

breaktables.  This information  is intended for completeness  only; the

use of these special breaktables by the user is not recommended.


*25 Oct 1974	MAIL RCV	BH

Summary of recent changes:

RCV has been extensively modified to allow more than one option per
message, e.g., ZXS will allow Z mode editing, then XGP spool the
edited message and also save it.

Two new RCV options:

K transfers the message to the file LOGOUT.MSG on your area; this file
will be typed and deleted when you log out (and are not logged in
elsewhere).

M allows the message to be modified (from Stanford displays only) by
running the E editor with the message as its data file.  Return to
RCV with the E command <control>XRUN.

Also, the command RCV GRIPES reads messages sent by the GRIPE command.

I believe that things which used to work still do work as before.  The
complete documentation is in RCV.BH[UP,DOC]

Changes to MAIL (and SEND, etc.):

There is a more convenient facility for program-originated mail, using
TMPCOR and the ACs passed by a SWAP UUO.

MAIL/W now lists logged-in recipients as SEND/W does.

OUTGO.MSG is now found on your login (not alias) area.

The complete documentation is MAIL.BH[UP,DOC].  See page 5 for the
program interface specification.
*30 Oct 1974	FAIL	REG

Recent changes to FAIL

Complete documentation can be found in FAIL.PUB[CSP,DOC]
or in FAIL.REG[AIM,DOC] (in preparation).

Switches:
	/O Omit output of binary universal files
	/E Extend main PDL

Pseudo Ops
	UNIVERSAL now causes a binary universal file to be written
	SEARCH FOO will read FOO.FUN if FOO isn't in core.
		will also try UNV:FOO.FUN and SYS:FOO.FUN
	SEARCH FOO(DEV:FILE.EXT[PPN]) will read the specified binary
		universal file
	GDEFINE like DEFINE except makes macro definition exist in outer
		block
	.DIRECT takes function names
		KA10	mark code to execute on KA10 only (Needs LINK-10)
		KI10	mark code to execute on KI10 only (Needs LINK-10)
		.NOBIN	suppress binary output
		.NOUNV	suppress binary universal output
		.XTABM	change macro argument processing:  leading
			and trailing blanks in actual arguments are
			not passed to the macro, unless the argument
			is enclosed in braces.
		.ITABM	default, old way, blanks and tabs are passed with
			the argument
	.FATAL	types current line and stops the assembly
	.INSERT is recognized anywhere a macro name may be expanded
		(i.e., doen't have to appear as first thing on a line)
	.REQUIRE same as .LOAD
	.REQUEST same as .LIBRARY
	.ORG	 same as ORG
	.LINK	 same as LINK
	.LNKEND	 same as LINKEND
	.CPU.	predefined variable.
			if Fail is running on	value is
			PDP-6			1
			KA-10			2
			KI-10			3

	The following pseudo ops should not be used until we get LINK-10:
	.COMMON
	.ASSIGN
	.TEXT

features;
<> are accepted for [] in ppns
Fail writes its processor id (12) in loader block type 6.
new arithmetic operators:
	∂	remainder in divison
	∃	JFFO (the bit number of the leftmost 1 bit in the argument)
	|	absolute value
END prints program break, starting address, etc. on listings.

bug fixes
	two bugs in ,, (halfword operator) fixed
	bug in MEVAL casuing ILLUUO frominput form:  ↑X<return>
program interface.
*4 Nov 1974	PLAN EXPIRATION (MAIL)	BH

The PLAN command can now include an expiration date in the same format
as the MAIL * command, i.e.,
	PLAN →date message
The date is in any of the formats acceptable to REMIND, but does not
include a time.  The PLN file will be deleted at midnight of the date
specified, i.e., the file will not exist as of that date.

This feature is implemented by entering a LATER request for the
specified date to run the program DELPLN.DMP[RMD,SYS] which actually
does the deletion.  This DELPLN request will be listed, and may be
flushed, by the CANCEL command.
*5 Nov 1974	ILISP (IL,actually) IMPROVEMENTS	DWP

  →$→ HOW TO READ THIS DOCUMENT ←$←
	
	Dates   in   the  right-hand   margin   indicate   when   the	19 NOV
corresponding  paragraph (or so)  was last  modified.  All  dates are
after 1 Nov. 74.  Main documentation for IL is `CS 206  CLASS NOTES -
UCI  LISP MANUAL',  which might  concievably be  available from  some
piece of the CS dept. 

	This document is page 128 of NOTICE[UP,DOC].


N.B.: `IL' is the name of the interpreter.
      `IC' is the name of the compiler.



I.	→→IMPROVEMENTS IN ERROR HANDLING AND DEBUGGING:

  Break Package

	?= and FROM?= may be abbreviated = and FROM, respectively.	19 NOV

	⊗REG PUSHDOWN CAPACITY EXCEEDED and 				19 NOV
	⊗SPEC PUSHDOWN CAPACITY  EXCEEDED now get you into  the break
package,  where you  can do something  like BKF  20 to find  out what
caused the stack overflow.  You can't go on afterwards, but  at least
you know what to fix. 

	When you TRACE or BREAK a subr, and are asked to type a dummy	19 NOV
ARGUMENT LIST, you  may type either a  list of the correct  number of
atoms or  a single atom.  In the latter  case, the subr may be called
with any number of arguments and everything will work. 

	When you ↑C and REENTER, you may  (must) now type the control	19 NOV
character  specified by  the manual;  e.g., type  <ctrl>H (not  λ) to
break. 

	When a break is entered, TYPE-AHEAD IS  SAVED and is NOT SEEN	5 NOV
BY  THE BREAK PACKAGE as junk.  When execution  of any non-break
package function is resumed, THE TYPE-AHEAD IS RESTORED to  the input
stream.  So, feel free to type away.



  Line Retrieval Feature

	If <ctrl>ALT  is typed  at any  point, the  previous line  of	5 NOV
keyboard  input is saved;  typing <ctrl><meta>ALT at  some later time
retrieves  the  saved  line  into  the  line  editor,   for  possible
modification and re-use.   This feature is disabled when talking to the
break package.



  Error Messages

 	When a LISP error message is printed, the portion of the	19 NOV
current input line which has already been read is displayed.  When
reading from a file, the filename, page number,and line number are
also printed.  In addition, the ENTIRE current input line is printed,
with a linefeed after the portion read so far; but the unread portion
will still be read when you continue.  See PWHERE below.
	When an error occurs during the reading of a file by DSKIN,
the error message is no longer suppressed !



II.	→→NEW ILISP FUNCTIONS OF GENERAL(?) INTEREST:

  EXIT		A SUBR of no arguments. AVOID USELESS GARBAGE 		5 NOV
           	collecting !  If you wish to SAVE a core image,
		get to the monitor by calling (EXIT), and no
		time-consuming garbage collection will happen 
		when you RUN the saved image.  EXIT does an
		EXCISE and a GC.

  (SETIGCRLF (CHRVAL X))						5 NOV
   			Resets the char. (normally →) which is
			used to concatenate lines for input and output.
			Returns the CHRVAL of the old char.

  WORDIN	A SUBR of no arguments.  Like TYI, but works only	5 NOV
   		when input is from a file, and returns one entire
		word of the file as a 36-bit quantity in AC 1, so
		you had better MAKNUM it immediately !  Do not do
		both WORDIN and TYI to the same input channel !

  PWHERE	A SUBR of no arguments.  If input is from a file,	19 NOV
		it prints (on the TTY) the same information printed
		when a lisp error occurs: filename, page and line
		numbers, and the last line read with a linefeed after
		the last chr. read.  Does not change the state of
		anything. 


III.	→→FEATURES OF USE TO USERS WITH EXTERNAL (FAIL) CODE

	The symbol table has been made less evanescent.  As before,	5 NOV
(LOAD T) loads code into binary program space, and such code is
permanent; (LOAD NIL) places code above the lisp data spaces, and
this code is removed (along with any old I/O buffers) by (EXCISE).
An EXCISE is done at each re-allocation.

	After any kind of LOAD, two kinds of symbols are present:
1) about 4k of LISP interpreter symbols, and 2) whatever symbols
came with the loaded code.  All of these symbols will remain until
either (EXCISE) or (REMSYM) is called:

   (EXCISE) removes the LISP symbols but leaves the others.
   (REMSYM) removes all symbols.

The LISP symbols will  come back whenever any LOAD  is done. (REMSYM)
and (EXCISE) together should always get you back to the core size you
had when you last allocated.

	 The loader now uses the new definition when it finds multiply
defined globals; therefore you can reload a new copy of the same program
(such as RAID, for example) and simply ignore the MUL DEF GLOBAL messages.
*20 Nov 1974	DATE75 DATE	REG
For information concerning DATE75 (i.e., the problem that the old date format
expires on Jan 5, 1975), read item 58 in UUO.UPD[S,DOC].
*24 Nov 1974	RCV	BH

The somewhat controversial feature of allowing mail to be read by RCV
when not logged in has been modified so that each user can control
access to his own mail, by OPTION.TXT options.  Three possibilities
are available.  The default is no access.  To allow your mail to be
read but not modified, put

RCV:READ

in your OPTION.TXT file.  (If the not-logged-in user types RCV PRJ,PRG
the file examined is OPTION.TXT[PRJ,PRG]; for the command RCV PRG the
file is OPTION.TXT[1,PRG].)  The READ option is what was formerly
always allowed.  You may also allow not-logged-in users to edit your
mail file as if they were logged in by using

RCV:WRITE

as the option.  This can be combined with the DIGEST and GRIPE options,
e.g.,

RCV:DIGEST,READ

Note: Users who are not logged in but are at Stanford display terminals
(III or Data Disc) always have at least READ access.  Only non-local
terminals can have no access.

It should be noted that the normal file protection mechanism still
applies, so that most options which involve copying the message to
another file will not work when not logged in, and will cause RCV
to die horribly.  This includes C,T,K,L,X,M, and P.

Users who are logged in may, as before, edit anyone's mail.  Send
complaints to BH.
*24 Nov 1974	MAIL EVENT	BH

A new MAIL command, called EVENT, can be used to tell the world about
an upcoming event.  The command format is

EVENT <date> <message>

The message does two things.  The first is to simulate
	MAIL *→ <date-1>
That is, your message is added to NOTICE.TXT, marked for deletion the
day before the event.  The second is that the message is added to a
file called <date>.DAY[2,2] where <date> here is the DAYCNT version of
the event date, in octal.  (You need not worry about that detail.)
This file is typed by LOGIN on the day before the event and also the
day of the event.  It is deleted automatically the day after the event.

The effect is that everyone is notified of the event three times: once
the first time they log in after you give the EVENT command, and once
each the day before and the day of the actual event.

If the event is on a Monday, the event notice will also be shown to
people who log in the preceding Friday.  It will be possible in this
case to see the notice twice on that Friday, once from NOTICE.TXT and
once from the .DAY file, if you log in with "," or had not logged in
between the entering of the EVENT command and that Friday.

The <message> argument may be provided in any of the usual MAIL ways.
It will be preceded by a line of the form
	Event of SUN 24-NOV-74
so you need not include the date in the text.  Do include the time,
however.  (As with MAIL *, the <date> argument should not include
a time.)

The typeout of the .DAY files is controlled by the PPN delimiter used
in LOGIN similarly to birthday messages: "," means you always see a
current .DAY file, "/" means you see it the first time you log in, and
"." means you don't see it at all.
*26 Nov 1974	Keyword Indexing: INDEX.  Text Retrieval: NS.	ME

KEYWORD INDEXING, RETRIEVAL & DISPLAYING OF TEXT FROM A USER'S FILES

The NS system can now be used to index and retrieve from a user's
files by keywords.  The system program INDEX is used to initially
index a user's text and also is used to add and index further text.
The program NS (started by monitor command NS) is used to retrieve
and display indexed text. 

Indexing is done using every word as a keyword except for about 100
very common words (such as "the", "and", "but", etc.) which are
ignored.  Before the indexing is done, certain suffixes are removed. 
The suffixes currently removed are: -S, -ES, -ING, -ED, -LY. 

The file INDEX.ME[UP,DOC] describes the use of INDEX and NS for text
indexing and retrieval. 

Please MAIL to ME any comments, suggestions or reports of bugs
concerning the use of INDEX and NS. 
*26 Nov 1974	EVENT RCV	BH

How to edit or delete EVENT notices:

If the event is more than one day in the future, the notice is in
NOTICE.TXT[2,2] and can be edited or deleted with the RCV * command.
If, while doing RCV *, you edit or delete an event message for which
a .DAY file exists, you will be asked before exiting RCV if you
want to edit that file.  (If you edit more than one such message you
may be asked more than once.)  You can then edit that copy of the
message also.

If the event is less than two days in the future, the notice has been
deleted from NOTICE.TXT and is now only in the .DAY file.  To edit
the proper file directly, give one of the commands

RCV TODAY
RCV TOMORROW

(Note: In the former case there is one other optional step, namely,
using the CANCEL command to delete the program request which is to
delete the notice from NOTICE.TXT two days before the event.  If you
don't delete the request, however, no harm is done.)

If what you want to do is change the date of an event, your best bet
is to delete the notice and start over.  The reason is that besides
changing the date in the message text itself you would have to change
the mysterious number in the message header and also move the notice
from one mysteriously named DAY file to another.
*12 Dec 1974	KEYBOARD MAPPING	BH

A new escape command, ESC M, has been added to allow users at
Data Disc terminals to map their keyboards to other Data Disc
terminals, so as to type into the other terminal's job.

The command is ESC <line number> M (or ESC M to map back to
your own line).  In order for the command to succeed, the
specified line must be a Data Disc line (between 26 and 117),
and must be either not in use, your own line, or a line which
is unhidden (see below).

The initial state for a newly initialized terminal is unhidden.
The escape command ESC H will make your terminal hidden, and the
BREAK H command will unhide it again.  Also, LOGIN will hide
your line for you automatically if you include
	LOGIN:HIDE
in your OPTION.TXT file (and log in with , or /).  (It should be
added that a sufficiently motivated user can always circumvent
any protection in this system.)

The ESC M (or ESC n M) command does an automatic ESC S so that
your screen will display the channel belonging to the other line.
However, any later change in the video switch setting for the
other line will NOT automatically be reflected on your screen.
Also, if the other line is looking at a channel other than its own,
you will not see that channel, but only the one which belongs to
the line.

If you are mapped to a line which becomes available (this happens
15 seconds after the job on that terminal logs out), you are
automatically mapped back to your own line, and your screen is
also automatically switched back to your own channel.

NOTE: If you map to an available terminal and type something at it,
your screen is NOT automatically switched to the new channel
assigned for that terminal.  You must type ESC S.

While you are mapped to another line, certain escape commands
are still interpreted as affecting your own line.  These are
the video switch (S, A, D, and T), audio switch (U and B), and
mapping (M) commands.  Other escape commands affect the line to
which you are mapped.
*4 Dec 1974	NEW TELEPHONE LINES & BUSINESS CARDS	LES

We are getting a new set of telephone lines such that nearly all
phones in the Lab will have a semi-private line plus 4971-3 and
the intercom line.  After installation (unknown completion date,
but soon) you should place all outgoing calls on your own line
in order to keep the 4971 series clear for incoming calls.  In
fact, it will not be possible to call outside the University on
the 4971 series.

For incoming calls, you may give out your private number if you wish
to receive calls directly, or 4971 if you wander about a lot, or both.
To find out what your new phone number will be, look at the list on
the Pony bulletin board.  You need to know your room number to figure
it out.

We plan to print a bunch of new business cards with a format similar
to the sketch on the Pony bulletin board.  If you would like to have
some, send me (LES) a message giving:
 1) your name, exactly as you would like it printed,
 2) title (blank, if you like)
 3) telephone number(s).

For staff members who need these cards for business use, the Lab will
pick up the tab.  For others (e.g. most students), it will cost you
about $5.00 for 250 cards.
*9 Jan 1975	NETWORK MAIL CC LINE	BH

In our never-ending effort to have as many frills as SNDMSG, MAIL now
allows the header on ARPA network mail to separate destinations into
a "To" group and a "CC" group.  To use this feature, type in all the
destinations as usual, but use a slash instead of a comma to separate
the two groups, e.g., the command

MAIL %AI RG,TK/MINSKY

will produce a header containing the lines

To:   RG @ MIT-AI, TK @ MIT-AI
CC:   MINSKY @ MIT-AI

There must be at least one "to" destination, and if slash is used
there must, of course, then be at least one "cc" destination.

If the /D switch is used to include a destination list in messages
sent to local recipients, the list will appear as typed, e.g.,

 CC: %AI RG,TK/MINSKY

If the /N switch is used to prevent a destination list in network
messages, neither the "to" line nor the "cc" line will appear.

Note that slash cannot be the first character of a one-line message.
*26 Jan 1975	RCV: GRIPE AND NAP CHANGES	BH

1.  The RCV:GRIPE option in OPTION.TXT now asks you "Edit gripes?"
only if a gripe has been made since the last time you edited the
gripes with RCV.  This information is kept in the creation date and
time of a zero-length file named <pn>.GRP[2,2].  The command
"RCV GRIPES" wil always edit the gripes but does update the file.

2.  RCV no longer presents NAP files (news service notifications)
for editing unless the character "\" was used in the command to
request them.  Instead, if a relevant NAP file is found, it types:
    News Service notification for XXX, type "RCV \" to edit.
to remind you.  "RCV \" gets your own news service notices, or
"RCV \PRG" for PRG's notices.  The reason for this is that the
normal way to process NS notices is by running NS and giving the
@ command.
*18 Feb 1975	MAIL/Q OPTION FOR ARPA MAIL	BH

The /Q switch to MAIL will automatically queue network mail without
trying to send it over the network.  This is good for sending long
messages to several destinations.  Bear the following points in mind:

If there are no job slots for the [RMND] phantom job, the attempt to
queue the mail will fail.  In this case the "failed" status report
will be given, and the message text will be saved as FAILED.TXT if
appropriate.  (If the mail is successfully queued when /Q is used,
FAILED.TXT is not written.)

The process of queueing a message can take a fairly long time.  For
a short message it may not pay to use this feature.

The [RMND] phantom will attempt to send mail queued by /Q essentially
immediately (within one minute if a job slot is available), rather
than after 15 minutes as with mail queued because of a network problem.
If the first attempt fails, the next attempt will be three hours later.

The /Q switch does not affect mail to local recipients, of course.
*9 Mar 1975	Copy ∂ feature improved.	SGK

	The ∂ prefix to a file name in Copy reads as many as three characters
of programmer name which are massaged to yield the file name of the user's mail
file.
	This service has been extended to allow the programmer name to be followed
by an extension and/or PPN.  Examples:

TYPE ∂JBL.PLN		Lists JBL's plan file.

TYPE ∂JBL.*		Lists all of JBL's [2,2] files (messages, plan, etc.)

TYPE ∂*		Lists NOTICE.TXT[2,2], the system messages file.  Known to
			most mail services (including MAIL and RCV) as *.

TYPE ∂*.[UP,DOC]	Lists NOTICE[UP,DOC] (this file).
*16 Mar 1975	Raid, Nraid, Nnraid	JBR

Two substantially identical new versions of Raid are available, namely
NRAID.REL[1,3] and NNRAID.REL[1,3].  NNRAID.DMP[1,3] is a runnable
version made from NNRAID.REL[1,3].  These new versions all use a new
symbol table format, in which the symbols are divided into 4 classes
and sorted by value within those classes.  The format is described
on p75 of NRAID.FAI[CSP,SYS].  Many bugs have been fixed and some
new features added.  A new writeup exists in a much more readable form
than the old one on RAID.PMP[H,RF].  The loader switch (or RPG switch)
/2V (%2V resp.) instructs the loader to sort the symbols and to load
with NNRAID.REL[1,3].  The switch /? causes the loader to sort the
symbols.  These versions also know how to sort an old style symbol
table into the new format.  There is a problem, however, and that is
that the new format may possibly take more space than the old one.
When this happens, certain symbols are thrown out until there is enough
room for the new symbol table to fit where the old one was.  This is
where the NRAID.REL[1,3] differs from NNRAID.REL[1,3].  NRAID has about
100 extra unneeded globals which it removes when it sorts the symbol
table, thus providing some room for the larger new format symbol table.
NRAID is meant for export to other systems where the loader does not
produce the new sorted symbol table.  Problems with NNRAID and NRAID
should be reported to JBR.
*20 Mar 1975	FTP	BH

A new version of FTP is up, with many changes.  More to come, like a
decent syntax, but here is what is changed in the present version:

It reads and interprets the reply codes on the messages from the other
host.  Thus, it knows if a file transfer is refused for some reason
instead of blithely trying anyway.

When you give a USER command, it interprets the reply code to see if a
password is required.  If so, it turns off echoing and asks for the
password (just the password, don't type PASS first).

When it types * at you, it really is time to enter another command.

When the connection is made, it negotiates with the other host to try
to find mutually agreeable type and byte settings.  Specifically, it
tries for TYPE I and BYTE 36 first.  This means that files are transferred
as binary data, a word at a time, and is the right thing for talking to
another PDP-10.  If this fails, it tries for TYPE A and BYTE 8.  This
means that files are transferred as standard ASCII characters.  (See below.)
In order to transfer binary (non-character) data to or from an 8-bit
machine, you need to know what you are doing. More details on this below.

Conversion to and from the Stanford character set are performed in
TYPE A.  That is, to have this conversion done, enter the command
"TYPE A" before starting the transfer.  This automatically implies
BYTE 8 (ASCII characters are transmitted as 8-bit bytes over the
network even though they are stored as 7-bit bytes locally).
The precise translation done is the same as in TELNET, as described on
page 97 of the Monitor Command Manual (advt.): The codes 32, 176, and
175 in Stanford files are translated to 176, 175, and 33 respectively.
(The characters are tilde, right brace, and altmode.)  The opposite
translations are done for incoming characters.  Also, nulls (code 0) are
deleted in either direction.  [The FTP server on the ITS systems requires
that you give an explicit BYTE 8 command before it will allow TYPE A.
This is a violation of protocol, and I've complained about it.]

TYPE A transfers of files from here cause SOS line numbers or E
directories to be eliminated.

To abort a transfer, or in general to reset the state of the FTP, type
ESC I.  (From a non-display, type CALL and REENTER.)  This will send
the FTP ABORT sequence and also disconnect the data sockets.  Many, or
perhaps even most, servers don't handle ABORT properly, but they'll
notice when the data socket disappears.

More about types and byte sizes: The BYTE command you type specifies the
byte size for image type (and "local byte"; see below) transfers only,
not for ASCII type.  ASCII type transfers convert 7-bit characters in
disk files into 8-bit network bytes and vice versa.  Thus, the command
"TYPE I" will restore the remembered byte size (probably 36 bits if you
are talking to a PDP-10) without an explicit BYTE command.  WIth 36-bit
bytes, image mode transfers are more efficient than ASCII transfers and
are preferable if character conversion is not necessary.  The only time
you may need to use the BYTE command explicitly is if you are trying to
send binary data to a non-36-bit machine.  There are two modes defined
for this kind of transfer, image and local byte. In image mode, consecutive
bits on one machine must be made consecutive in the stream sent to the
other machine.  Thus, sending 36-bit words in 8-bit bytes means that the
fifth such byte will contain the last 4 bits of one word and the first
4 bits of another.  This is inefficient and confusing at both ends, but
is necessary if all of each 36-bit word must be sent to a 360.  If your
data is naturally divided into 32-bit or 8-bit pieces (as for example
if youwant to retrieve a file from a 360), you can use the first 32 bits
of each PDP-10 word to store a 360 word by specifying "local byte" type
(the command is "TYPE L"), which uses ILDB or IDPB to store 8-bit bytes
in the way which is most natural for a PDP-10.  You might try BYTE 32
which should be the same in its effect but more efficient.  It is possible
that the FTP server at the 360 you are interested in doesn't believe in
local byte type transfers, but on its end, since the byte size is a
factor of the word size, it is ok for the 360 to think of it as an image
type transfer while we think of it as local byte.  To set this up, say
"TYPE X" which tells the other end TYPE I but does TYPE L on this end.
If this is confusing, all I can say is that trying to send binary data
to a 360 is inherently confusing, sorry about that.

One more transfer type, of limited interest, is "ASCII print file",
which you get by "TYPE P".  This does an ASCII transfer but tells
the other end to format the file for printing there, e.g., perhaps
substituting spaces for tabs.  Our FTP will accept TYPE P and treat it
exactly the same as TYPE A except for what it tells the other end.

If you find a bug in FTP, you can use the old one by saying "R OFTP"
to the monitor, and please mail a note to BH with the details,
preferably including a PPSAV output.  Thank you.
*31 Mar 1975	COPY comments, page lists	ME

COPY now treats the character semicolon (;) as a comment character
and ignores any text occurring after it (unless the semicolon is
quoted as part of a name, e.g., ↓$$;;XX↓.FOO[1,3]).  Thus commands
like "TYPE FOO;bah humbug, this is only a comment<crlf>" are legal. 

Also, if a page (or word) specification occurs as the last thing on
a command line to COPY, the final right parenthesis may be omitted.
That is, "FOO(2<crlf>" is equivalent to "FOO(2)<crlf>".
*9 Apr 1975	Telephone Experiment	SGK

	Begining Tuesday April 15 we will experiment with having
everyone in the lab answer 4971 thru 4973.  See the Pony corkboard
for the complete details.  In any case, please observe the following
protocol when answering the phone.
	Answer with something intelligent like "AI Lab".  Inform
the caller that you will page, and do so.  Give the called party's
name twice, and give the line number when you page.  In a reasonable
amount of time (~20 seconds) check to see if the call is still on hold.
If it is, pick it up, explain that the called party did not answer
the page, and offer to take a message which you should be prepared
to deliver via the machine or the mail boxes.  If you don't have the
time to follow up on a call by takeing a message or whatever, don't
answer the phone.
*9 Apr 1975	FTP	BH

New FTP user and server programs are up.  The main improvement is that
the server now handles the various TYPEs properly, as explained earlier
for the FTP user program.  Thus SAIL-ASCII character conversion can be
done, for example, in a transfer initiated somewhere else.

The server now accepts the ABOR (abort) command, and the associated
TELNET SYNCH facility.  I am not sure that anyone else's FTP tries
to win with this feature, but it sure works nice between here and
here.  (Note to remote users: I'd like to know if your local user can
successfully negotiate an abort with our server.  Do a STAT on a big
area, or STOR or RETR a big file, and try to abort it.)

The user now processes the 255 SOCK message sent by servers to make
sure the data connection is made to the right socket.  This is a
"security" feature, to prevent spies from sneaking into a data connection
set up by someone else's FTP.  If it gives anyone any trouble I will
cheerfully disable it rather than debug it.

The user accepts a few pseudonyms for protocol commands, some for
names more familiar to our users (e.g., ALIAS) and some to help out
people used to TENEX's FTP user program.  Here they are:
	PSEUDONYM	EQUIVALENT TO
	---------	-------------
	LOGIN		USER
	ASCII		TYPE A
	IMAGE		TYPE I
	LOCAL		TYPE L
	ALIAS		XCWD
	GET		RETR
	SEND		STOR
	DISC		BYE
	QUIT		BYE

Some new and old bugs have been fixed in both programs: in particular,
a user bug which sometimes garbled image type transfers, and a server
bug which broke the connection on a rename or delete.

Still to come: better server responses, multiple RETR/STOR (i.e., with
wildcard filename) in user.
*19 Apr 1975	FTP server	BH

Our FTP server now accepts the LIST and NLST commands.  This means
that TENEX FTP users can use the DIRECTORY and MULTIPLE GET commands
in their FTP.  The only problem is that TENEX doesn't know about our
filename syntax, so that if you ask for FOO.*[1,XYZ], you get files
on the TENEX system with names like "FOO.BAR[1".  LIST and NLST are
identical in their effect: the listing contains one full pathname on
each line.  (The STAT listing is more concise, with one line for each
PPN followed by one line per file in that PPN with just name and ext.)

Our FTP user now accepts the commands
	LIST <local file> ← <remote file template>
	NLST <local file> ← <remote file template>
(DIRECTORY is accepted as a synonym for LIST) to get remote directory
listings into a file.  The difference between LIST and NLST is that
the listing produced by LIST may contain extra information like file
length, etc., whereas the NLST (name-list) list contains only the
file pathnames, one per line.  The NLST command is intended more for
machine use than human use.

Also, as a convenience for non-SAIL-terminal users, the character "="
is now accepted as a substitute for "←" or "→" in file transfer commands.
Remember that the local file name always comes first.
*23 Apr 1975	FTP multiple RETR/STOR	BH

The FTP now has several related features to make it easier to specify
filenames for transfers.  The RETR and STOR commands (and their
synonyms GET and SEND) can now be given only one file specification
as an argument (the remote file specification), and it will figure
out a local filename for itself if the other system is any known PDP-10
operating system (TOPS-10 (that's us), ITS, and TENEX).  Other filename
syntaxes can be added to this list if someone who needs them explains
the syntax to me.  The rules used in scanning the remote file specifier
are as follows.  (Note that this applies only if there is not also an
explicit local file specifier, i.e., the characters =, ←, and → do not
appear on the command line.)
	1.  The characters - and @ are ignored completely.
	2.  Characters between brokets (<...>) are ignored.
	3.  Characters between square brackets are ignored.
	4.  Characters after a semicolon are ignored, except for ITS,
	    in which case the token before the ; is ignored.
	5.  The token before a colon is ignored.
	6.  The character * may be used alone as a filename or extension,
	    to indicate multiple transfers.  See below.
	7.  If two tokens are separated by one or more spaces and no
	    other punctuation, the second is taken as the extension, as if
	    a period separated them.
	8.  Filenames are truncated to six characters, extensions to three.
	9.  With the exceptions mentioned above, only letters and digits
	    may be used.
For example, the command
	RETR <DIRECTORY>FILENAME.EXTENSION;87
is equivalent to
	RETR FILENA.EXT=<DIRECTORY>FILENAME.EXTENSION;87

It is possible to send or receive more than one file in a single command.
For example,
	RETR <DIRECTORY>*.SAV
does the obvious thing, and
	RETR *.DMP[TNX,BYT]=<DIRECTORY>*.SAV
allows some control over the filenames used.  Note that
	RETR MUMBLE.*=*.SAV
will name all files MUMBLE.SAV, probably not a good idea.  The need for
multiple transfers is determined by scanning the local file specifier,
if any; thus
	RETR [FOO,BAZ]=FILE.EXT
will have the right effect but be slower than necessary because it is
taken as equivalent to
	RETR *.*[FOO,BAZ]=FILE.EXT
and the fact that only one file is specified on the right is not noticed.
Be careful about spaces in the remote file specifier, which may affect
the remote server.  All characers after the equal sign or arrow, if any,
or after the first space after the command name otherwise, are sent.

The mechanism for multiple RETR is that the remote file specifier is used
in an NLST command, the result of which is a list of file specifiers at
the remote host which match the template.  Each of these is then scanned
to determine the local file name and retrieved.  For multiple STOR, the
local (or remote if no local) file specifier is used to select files from
the proper local file directory, then the remote file specifier is used
for each STOR command, but with asterisks replaced with the actual file
name.  Note: as a special heuristic, if none of the characters *, ., or
(for ITS only) space appear in the remote file specifier, it is treated
as if "*.*" were appended to it, e.g.,
	STOR <DIRECTORY>
is treated as if it were
	STOR <DIRECTORY>*.*
Note that the command
	STOR *.*=<DIRECTORY>FILE
(which doesn't make sense anyway) will try to make remote file names by
appending the local filename to "FILE".

Device and PPN are ignored unless in an explicit local file specifier.
Thus, a command like
	RETR *.DMP[X,Y]
will use "*.DMP[X,Y]" as the remote file specifier, but will store the
retrieved files on your own (alias) PPN, not on [X,Y] here.  You must say
	RETR [X,Y]=*.DMP[X,Y]
if that is what you mean.

I believe that this is all easier than it looks, and that any reasonable
command will do what you expect.  I would like to know about any trouble
and also about any conspicuous successes.  In case of emergency, the
FTP without this set of features (the one that was up until today) is
SYS:OFTP.DMP and the ancient FTP with no features at all is SYS:OOFTP.DMP.

P.S.--Multiple RETR from ITS systems doesn't work at present because
their server doesn't support the NLST command.  Multiple STOR ought
to work, though.
*30 Apr 1975	FTP	BH

In cases where the FTP makes up local filenames based on the remote
filename (wildcard RETR and RETR with no explicit local file name),
it first tries to look up the file it intends to write.  If the file
already exists, you are so notified and may type:
	<cr> to overwrite the existing file
	<lf> to overwrite the file and prevent further such warnings
	<alt> to abort this transfer (not all of a multiple RETR,
		just this file)
	or a filename to use instead of the FTP-generated name.
*24 May 1975	NETWORK SEND (MAIL) FTPS	BH

A private protocol between SAIL and the three ITS hosts (MIT-AI,
MIT-ML, and MIT-DMS) permits SEND to work over the network as
MAIL does.  There are three options having to do with mailing
the message if the recipient isn't logged in:

MAIL command	FTP command	effect
------------	-----------	------
SEND or SEND/N	XSEN		fails if user is not logged in
SEND/Y		XSEM		mails the message if not logged in
SEND/M		XMAS		mails as well as sends even if logged in

The syntax of the FTP command/reply sequence is the same as for MAIL,
except that the message "009 User not logged in, will mail" may be
given in response to XSEM or XMAS.  (Another message with unusual
text but a standard code is "453 Not logged in".)

If a network SEND/Y or SEND/M fails in a way which would queue
network mail, the message is queued as MAIL, not as a send.  A
SEND or SEND/N which fails in this way is not queued at all.

The MAIL program will attempt network SEND using this protocol to
any host, just in case someone else implements it, but will of
course fail.  This failure is in the "refused" category, so it
won't try to queue the message.
*1 June 1975	WHO	ME

For complete information on WHO, see WHO.ME[UP,DOC].  Here is a list
of recently added features. 

WHO now displays each job's ALIAS.  If a job has an ALIAS and is not
running spacewar, then a dot is printed between the SW10 and SW6
slots to help you see which job has the ALIAS. 

Two new commands (can be preceded by decimal number as argument):
  FF	   (formfeed) scroll up whole screen
  VT	   (vertical tab) scroll down whole screen

On non-display terminals, the monitor command WHO/Q can be used to
have WHO quickly print only the PPN and TTY number for all jobs that
are attached to a terminal. 

From any terminal, the REENTER monitor command can be used to make
WHO output an updated version of the information most recently
displayed to the line printer (LPT) instead of the terminal. 
*22 June 1975	WHO jobs to display and command files: *+-"@	ME

(This notice is about 100 lines long.)

For complete information on WHO, see WHO.ME[UP,DOC].

The five commands * + - " @ have been added to WHO for selecting
which jobs are to be displayed.  The commands M and V now use the new
method for selecting jobs to be displayed. 

  M V * "  These seven commands allow you to specify which jobs
  + - @    should be displayed.  WHO keeps two special tables of job
           specifications for deciding which jobs it will display;
           these tables are called the PLUS table and the MINUS
           table.  Jobs specified by the MINUS table will not be
           displayed (regardless of other conditions).  The PLUS
           table is ignored if empty; but if it is non-empty, then
           only jobs specified by the PLUS table are displayed;
           however, jobs specified by both tables will NOT be
           displayed, since the MINUS table has priority.  Both
           tables are initially empty and the R and N commands reset
           both tables to empty.  Jobs can be specified in these
           tables by project name, programmer name, project name and
           programmer name, job number, and job name.  Each of the
           commands * + - " @ takes an argument which should be ended
           with a carriage return; if an argument is ended with an
           altmode, the command will be aborted.  WHO will beep you
           if an argument is not accepted (illegal argument or
           aborted with altmode.) The commands M and V take no
           argument.  The argument to @ is a filename, the argument
           to " is a job name, and the argument to each of the
           commands * + - is a job specification which can be any of
           the following forms:
             PRG      programmer name (letters and digits only)
             ,PRG     programmer name (letters and digits only)
             PRJ,     project name (letters and digits only)
             PRJ,PRG  project-programmer name (letters & digits only)
             NUMBER   a decimal job number less than 64 (digits only)
             "NAME    a job name (any sixbit characters after ")
           A job will match specifications of the first four types if
           either its logged-in PPN or its ALIAS PPN matches the
           specification.  Any job running on a PTY owned by a job
           being displayed will also be displayed, unless the job on
           the PTY matches a specification in the MINUS table.  If a
           job running on a PTY is displayed and its controlling job
           is not displayed, then the job on the PTY will be indented
           using dots (.'s) instead of spaces (which would be used if
           the controlling job were being displayed). 

           The seven individual commands are described below.

  M        only display jobs matching your logged-in programmer name
           or your ALIAS programmer name (clears both tables and then
           puts your logged-in programmer name and your ALIAS
           programmer name into PLUS table)
  V	   only display jobs belonging to volleyball players
           (simulates an @VB.DIS[P,DOC]--see @ below)
  *<spec>  only display jobs matching the specification <spec>
           (clears both tables and then puts <spec> into PLUS table)
  +<spec>  also display jobs matching <spec> except those matching
           entries in MINUS table (adds <spec> to PLUS table and re-
           moves it from MINUS table; leaves running-jobs-only mode)
  -<spec>  don't display jobs matching <spec> (adds <spec> to MINUS
           table and removes it from PLUS table)
  "<name>  only display jobs with the job name <name>
           (clears both tables and then puts <name> into PLUS table)
  @<file>  clear PLUS & MINUS tables and then put job specifications
           from the file <file> into the tables.  E directory pages
           and SOS line numbers are permitted and ignored.  The
           default extension .DIS is used if no extension is typed.
           If no PPN is typed, the disk area [P,DOC] is tried first,
           then your own disk area, to find the file. 

           In reading from a file:

           1) Spaces are ignored except in job names.
           2) A semicolon (;) not appearing in a job name causes the
           rest of the line to be ignored. 
           3) Non-sixbit characters (except lower-case letters, which
           are converted to upper case) are treated just like CRLFs. 

           An entry in the file can be any of the forms listed below,
           and should be terminated by a comma or a CRLF.  Note
           however that a comma (or any other sixbit character
           including semicolon and space) appearing as one of the
           first 6 characters of a job name will be taken as part of
           the job name. 
	     +<specx>	Add the specification <specx> to PLUS table.
	     <specx>	Add the specification <specx> to PLUS tabls.
	     -<specx>	Add the specification <specx> to MINUS table.
           Unless all entries in the file are of the form -<specx>,
           WHO leaves running-jobs-only mode (R).  A job
           specification in a file, <specx>, can be any of the
           following forms (note that these are slightly different
           from the forms for <spec> that you can type in. 
	     PRG	programmer name
	     [PRG]	programmer name
	     [,PRG]	programmer name
	     [PRJ,]	project name
	     [PRJ,PRG]	project-programmer name
	     "NAME	job name.  After the " the first 6 characters
                        (or less if terminated by a CRLF) are taken
                        as a job name.  Then characters are skipped
                        until a comma or CRLF is seen.  
	   Note that you cannot specify a job number from a file.
*1 JUL 1975	VIDEO SWITCH MAPPING	BH

The video switch control ESC commands and UUOs have been extensively
modified, to solve some problems involving video switch manipulation
by programs run by a keyboard-mapped user.  The structure will be
explained in general before listing the effect of specific commands. 
It is hoped that users whose programs do not use the VDSMAP UUO will
not have any difficulty continuing to use the system as always. 

Each physical terminal screen is usually "tied" to some terminal
line, perhaps its own; this means that any video switch operations
performed by the program running on that line will be seen on the
screen.  A screen which is tied to a line which is not in use sees
the channel containing the available message and system WHO line. 
Each screen will normally be tied to the same line to which its
keyboard is mapped, but a screen can be tied to a different line or
to none at all. 

There are three video switch settings associated with each Data Disk
line number: the "permanent map" and "temporary map" for the line,
which can be set by the program running on it, and the "untied map"
for the correspondingly numbered physical screen, which is seen on
that scren if it is not tied to any line.  A terminal which is tied
sees the temporary map of the line to which it is tied.  (An
available line has no temporary map, and any screen tied to it sees
its permanent map.)

When an available terminal line is first typed on, either by a user
physically at that terminal or by a user keyboard-mapped there from
elsewhere, all terminals which are keyboard-mapped there become tied
there (they usually will have been tied there already, but might not
have been).  Thus anyone mapped there will see the newly allocated
channel.  (Note: there is a possibility of terminological confusion
in discussing this.  A terminal's keyboard will be said to be
"mapped" to some terminal line, either its own or another; typing at
the keyboard affects the line to which it is mapped.  However, the
terminal screen is spoken of as being "tied" to a line, not mapped to
it.  There are "video maps" (the three described above) associated
with screens and lines, but they "map" the screen to Data Disk
channels, not to terminal lines.  In what follows,
"terminal keyboard" and "terminal screen" refer to actual pieces of
hardware, whereas "terminal line" refers to a software concept, the
entity with which TTY buffers and so on are associated.  Using this
terminology, the untied map is associated with a screen, but the
permanent and temporary maps are associated with a line.  As in the
last sentence, "keyboard", "screen", and "line" should be read as
"terminal keyboard" and so on in what follows.  Also,
"tie the terminal to X" should be read as
"tie the terminal screen to X", etc.)

The keyboard mapping commands (ESC M, ESC n M, and BREAK M) tie the
terminal issuing the command to the line to which its keyboard is
mapped.  Thus, the user who issues the mapping command sees what the
job he is controlling wants him to see. 

A new command, BREAK n L, can be used to tie your screen to an
arbitrary line without affecting its keyboard map.  The usual privacy
restrictions apply.  BREAK L with no argument uses the line to which
your keyboard is mapped, so it is useful to mean "let me see what I'm
doing"--the function for which ESC S was usually used in the past. 
NOTE: There is an ESC n L command which has nothing to do with this
one!! 

The video switch commands ESC n S and BREAK {n} S, but not ESC S,
untie your terminal and set your untied map.  The command thus frees
your screen from program control, so that you will not be affected by
program video switching until you are again tied to a line.
(Remember, the keyboard mapping commands and BREAK {n} L tie you.)
The effect of ESC S with no argument is described shortly. 

The [ESC|BREAK] {n} T commands, in addition to the effect described
above, set a flag bit associated with your terminal which indicates
that when the program on the line to which your keyboard is mapped
does a video switch RESET operation (either explicitly or because of
a RESET of the job as a whole) you are automatically re-tied to that
line as if you had typed BREAK L.  The flag is cleared by
[ESC|BREAK] {n} S and by the tying commands (the keyboard mapping
commands and BREAK {n} L).  It is not affected by
[ESC|BREAK] {n} [A|D], so you can modify your untied map without
losing its RESET-ability status. 

The commands [ESC|BREAK] {n} [A|D] modify the map which you are
currently watching, without modifying your tied/untied status.  More
explicitly, if you are untied, your untied map is modified.  If you
are tied, the effect depends on whether or not the program running on
the line to which you are tied has given a temporary VDSMAP which has
not yet been cleared by a video reset.  If so, only the temporary map
is modified; otherwise, the temporary and permanent maps are
affected.  In other words, if there is a temporary VDSMAP in effect,
the escape command will be temporary also.  (Note: the distinction
between the temporary and permanent maps is different from the
distinction between ESC n S and ESC n T!  The temporary map is
associated with a terminal line and is set to the permanent map, also
associated with the line, by a video reset of the job.  If you are
untied because of either ESC n S or ESC n T, the A or D command
affects the untied map associated with your hardware screen.) Note
that if you are untied, these commands affect only what you see, but
if you are tied, they affect other users who are tied to the same
line you are. 

The ESC S command with no argument is interpreted differently from
the other video switch commands.  It ties you to the line to which
your keyboard is mapped, like BREAK L, and also sets that line's
temporary and permanent maps to its main channel (the one assigned to
it when it was first typed on).  Thus, ESC S undoes whatever video
switch manipulation your program has done as well as tying you to it. 
It affects other users keyboard-mapped to the line you are mapped to. 
The ESC N command also does ESC S as well as normalizing your page
printer.  Note that only ESC S and ESC N have the effect described in
this paragraph, not, e.g., ESC T.  ESC S, like other forms of video
switch reset, re-ties anyone who is keyboard mapped to your line but
untied by [ESC|BREAK] {n} T. 

The VDSMAP UUO normally affects the temporary (sign bit off) or
temporary and permanent (sign bit on) map of the addressed line.
That is, anyone tied to the line will see the results.  If the
specified line is available, it has no temporary map, and any attempt
to set its temporary map will be a no-op. 

This operation depends on the 200000,,0 bit in the UUO's AC argument
being off.  If that bit is on, the UUO addresses a physical screen,
unties it, and modifies its untied map, as if the user at that
terminal had typed a video switch command.  This is a privileged
function (UPG privilege).  If this bit is on, the 400000,,0 bit
determines whether a video reset will re-tie the screen; if the bit
is on, the effect is like ESC n S, if off, like ESC n T. 

If the 200000,,0 bit is not set in the argument, the status returned
by the UUO will be the temporary or permanent map of the addressed
line, depending on the 400000,,0 bit.  If the 200000,,0 bit is on,
the UUO will return the map actually being seen by the addressed
screen: its untied map if it is untied, or the temporary (permanent
if no temporary) map of the line to which it is tied.  (The 200000,,0
bit is not privileged in a get status request.)

A new VDSMAP function, with code number 5, can be used to find out if
a particular screen is tied.  If the screen is tied, the UUO returns
in the AC the line number to which it is tied.  If not, the UUO
returns zero if the screen was untied by ESC n S or equivalent, or
400000,,0 if the screen was untied by ESC n T or equivalent.  This
function ignores the 600000,,0 bits in its argument, and never skips.  

A VDSMAP UUO to a shadow line, of course, simply modifies that shadow
line's map.  In this case the 200000,,0 bit is ignored, and the
400000,,0 bit must be on. 

If the operation of the VDSMAP UUO is RESET, then the 200000,,0 bit
is ignored (treated as if zero).  If the 400000,,0 bit is on, the
temporary and permanent maps are reset to the line's main channel,
otherwise the temporary map is set to the permanent map.  Then, as
mentioned above, any terminals which are keyboard mapped to the
affected line but untied by [ESC|BREAK] {n} T are re-tied. 

When a terminal line logs out and becomes available, ESC M is
simulated for all terminals keyboard-mapped to it.  Also, any
terminals which are tied to it are re-tied as by BREAK L.  However,
screens which are untied but watching that line's channel (e.g.,
which have typed BREAK n S) will still see the channel.  This is
another reason that BREAK n L is a better way to watch another line
than BREAK n S. 
*6 July 1975	WHO monitor command line	ME

After WHO has exited (whether by command, by timing out, or by
finishing the output on a TTY or the LPT), typing the monitor command
CONTINUE will cause it to restart and to continue presenting on the
terminal the same information it was presenting when it exited. 

Also, WHO now allows display commands to be typed in the monitor
command line BOTH on displays AND on non-displays.  For example, the
following are all legal:

  WHO R<cr>		W QR<cr>       ;Q here is ignored on displays
  W@VB<cr>		W QE@S<cr>     ;E is ignored on non-displays
  W*SYS<cr>		W↑↑<cr>
  W R-"WHO<cr>		W RE2↑-SYS<cr>
  W E<cr>		W EM<CR>

The command E appearing in the monitor command line will cause WHO to
exit (on displays), but not before the whole line has been processed.
Other commands in the line are processed in order from left to right. 
Thus, W EM<cr> will put up a display of your jobs (M) once and then
exit leaving the display on the screen (E).  Just W E<cr> will put up
a display of all jobs once and then exit leaving the display on the
screen (E). 

Any command taking an argument (@*+-") must be the last thing in the
line.  Thus, the following command line is ILLEGAL:
  WHO*SYS+NS 

Any characters in the monitor command line which are not legal
display commands to WHO are ignored.  Note that the character ";" is
a command to WHO (same as "↑") and is NOT interpreted by WHO as
delimiting a comment in the monitor command line. 
*13 July 1975	WHO monitor command line (TTYs), T F commands	ME

WHO display commands can now appear in the monitor command line on
TTYs as well as on displays.  In addition, two new commands have been
added for both displays and non-displays.

  T        Type out the job information only.  This works on all
           terminals; WHO will exit after the typeout.
  F        Same as T, but devices (F is for Files) are listed also.

Both T and F omit the system statistics from the typeout.
*15 July 1975	COPY DIRECTORY switches.  "]" and "\".	ME

A new COPY is up with a revised output format for the DIRECTORY
command.  Using the DIRECTORY command with selected switches from the
list below, the user can have any combination of 6 optional directory
fields typed out for the files listed.  The name of the switch used
to force a particular field to be printed is the same as the name of
the field (as printed in the title line for the directory listing).
Here are the switches and the information they cause to be printed.

/TIME		;the file's time written
/PROTECTION	;the file's protection
/WRITER         ;PPN and program name of the job that wrote the file
/REFERENCED	;the date on which the file was last referenced
/DUMPED         ;the date on which the file was last dumped in a
                ;  system dump, the tape number, and a ">" if
                ;  dumped more than once in a permanent class dump
/OFFSET		;the (decimal) record offset for the file, if any

These switches may appear anywhere on the command line with the same
effect: all files listed will have the selected fields printed. 

The /FULL switch implies the first four of these (/TIME /PROTECTION
/WRITER /REFERENCED) plus /DUMPED if COPY is running on or from (via
a PTY) a Data Disc or III display.  The switch /TIME is turned on
automatically by DIRECTORY on Data Discs and IIIs.  If a listing file
or device is specified for the directory listing (for example,
DIRECTORY FOO←*.*), all 6 of the above switches are turned on
automatically. 

Also, any file that has a non-zero record offset will always have its
offset printed; if /OFFSET is not in effect, then the offset will be
printed on the end of that file's directory line as OFFSET = nnnn. 

In /QUIET or /FAST (/F) or /FOO mode, the above switches are ignored.

Also new in COPY, right square bracket (]) is always optional at the
end of a PPN except when the programmer name is omitted and the next
character is a comma.  That is, FOO[A,B means FOO[A,B] not FOO[A],B.
FOO[A,B,C is legal and means FOO[A,B],C. 

Finally, file hack names, i.e., names preceded by backslash (\), may
now be abbreviated; \MAIL has been flushed--use \MSG instead.
*9 Aug 1975	FTP PICKUP MULTIPLE TRANSFER	BH

The user FTP program now has a new command, PICKUP, which can be used
to continue a multiple transfer which is interrupted either by a
transient network failure or by a user error (e.g., attempt to write
into a protected file).  The command permits the transfer to be
re-entered along with the (local) name and extension of the first file
actually to be transfered.

Suppose that you are trying to copy a complete directory from another
system, let's say a TENEX, so you give the command
	RETR <FOO>*.*
After several files have been retrieved, the connection is broken,
while in the middle of copying <FOO>PARTIALLY.COPIED into PARTIA.COP
in your directory.  You re-establish the connection, and type
	PICKUP PARTIA.COP
at which point you are invited to repeat the RETR command, which will
ignore all files presented by the remote host until one comes along
which matches the name PARTIA.COP, at which point it begins actually
reading files.

If the multiple transfer is stopped because of an error which does not
break the network connection, so you can continue using the same FTP,
you can give the PICKUP command without a filename argument, in which
case the last filename for which a transfer was attempted is used.
Also, after the PICKUP command, you can just type <return> instead of
repeating the STOR or RETR command, and the last such command given
will be repeated.  The last transfer must have been a multiple STOR or RETR.

If the PICKUP command line ends with <alt> instead of <return>, the
first file transfered will be the one after the one in the argument
(or the one after the one remembered from the aborted transfer).
This is useful for the case of a transfer which cannot be done
because of a protection violation, when you want to continue the
multiple transfer, skipping the protected file.  In a situation like
that, you may not know the name of the first file you want to transfer,
but only the name of the last file you don't want to transfer.

If a PICKUP command is given after a transfer which is not multiple
but for which an implicit local filename was used, e.g.
	RETR <FOO>FILENAME.EXTENSION
which implicitly specifies FILENA.EXT as the local name, then the
PICKUP command with no argument can be used to repeat the transfer.
*25 Aug 1975	FIND WITHIN	ME

(Complete FIND documentation is in FIND.TES[S,DOC].)

A new FIND is up with two new features.  First, and of lesser
importance, the line on which a key is found is now preceded by a
greater-than sign (>) instead of an asterisk (*). 

Secondly, the new FIND allows specification of the delimiter that
determines the amount of text searched as a unit and typed out when a
key is found.  The default typeout is a paragraph (i.e, text
delimited by blank lines) as before.  To specify some other quantity,
use the WITHIN <delim> phrase in the command (see the syntax below).
The text typed out will be that delimited by <delim> at the beginning
and at the end.  The delimiter <delim> can be specified as a single
character or it can be specified by one of the following exact names:

	MSG  LINE  PAGE  PARAGRAPH  GRAF

where MSG means that partial sign (∂) is the delimiter (designed for
use with mail files), LINE means that linefeed is the delimiter
(i.e., only the line on which the key is found will be typed), PAGE
means that formfeed (a pagemark) is the delimiter, and PARAGRAPH or
GRAF means that a blank line is the delimiter (this is the default).

The delimiter character will be treated as a delimiter only if it
occurs as the first character on a line; a line starting with the
delimiter character is considered the first line in a new text unit. 

The syntax is now:

FIND [EXACTLY] [WITHIN {char|MSG|LINE|PAGE|GRAF}] [EXACTLY] key [[IN] file]
	where square brackets indicate optional elements, braces contain
	several alternatives, char is a single character, and key is
	the string to be found in file.

Within a single delimited text unit, up to about 25 lines can occur
both before and after the line in which the key is found.  If more
than about 25 lines occur before and/or after the key but within the
delimited text area, an ellipsis (. . .) will be typed out before the
first line typed out and/or after the last line typed out. 

Examples:

FIND WITHIN ∂ EVENT IN NOTICE.TXT[2,2
FIND WITHIN ∂ EXACTLY " E " IN NOTICE.TXT[2,2
FIND WITHIN MSG PDP-11 IN NOTICE.TXT[2,2]
FIND WITHIN PAGE UDPUFD IN MONCOM.BH[S,DOC
FIND EXACTLY WITHIN LINE Foo IN FILE1
*1 Sept 1975	FIND MAIL FILES (∂)	ME

(Complete FIND documentation is in FIND.TES[S,DOC].)

FIND now accepts filename specifications using the partial sign (∂)
to specify a mail file (.MSG[2,2]).  The partial sign can optionally
be followed by 1)a programmer name to specify one other than your
own, and/or 2)an asterisk (*) to specify the system message mail file
NOTICE.TXT, and/or 3)an extension to specify one other than .MSG,
and/or 4)a PPN to specify one other than [2,2].  When a partial-sign
filename specification is used, the default amount of text to be
searched and typed out as a unit (see the FIND notice for 25 Aug
1975) is one message, that is, all text between partial signs in the
searched file; this can be overridden using the WITHIN <delim>
phrase. 

For instance, the command

	FIND garply baz in ∂

will search your own mail file for "garply baz" and type out the entire
message(s) it occurs in.  The command

	FIND ,me in ∂*

will find all system messages (in NOTICE.TXT[2,2]) from ME.  The
command

	FIND ,me in ∂bh

will find all messages sent to BH by ME, and the command

	FIND president in ∂.nap

will search your own News Service notification file on [2,2] for all
notifications containing "president". 
*8 Sept 1975	COPY /NOFF	ME

The new COPY switch /NOFF suppresses the output of formfeeds found in
input files.  When this switch appears in the destination file term,
it applies to all source files.  When it appears after a source file,
it applies only to that file.  /NOFF implies /ASCII.

For example,

	COPY FOO/NOFF←BAZ,GAR

would create a one-page file FOO by concatenating all pages of BAZ
with all pages of GAR, and the command

	COPY FOO←BAZ/NOFF,GAR(3:5)

would create FOO by combining all pages of BAZ into page 1 of FOO
followed by pages 3 through 5 of GAR which would become pages 2
through 4 of FOO.  The command

	COPY FOO←BAZ(2:3),GAR/NOFF

would create a two page file FOO whose second page would be the
concatenation of page 3 of BAZ and all pages of GAR.

Note that /NOFF does not inhibit the insertion of formfeeds that
occurs every 52 or so lines when /HEADER is specified (for example,
by the LIST command), nor does it suppress formfeeds inserted by the
line printer (LPT) after 54 lines are printed on a page.
*22 Sept 1975	SAIL		JFR

The files SAISG8.SEG, SAILOW.REL, LIBSA8.REL, HLBSA8.REL, SAIL.DMP, and
SAIL.SEG on [1,3] have all been updated.  Backup  .OLD  files exist where
appropriate.  Existing programs should continue to run as before.

Three major changes and many minor improvements and bug fixes have been made.
These modifications were made with support from the Computer Science
Department of Carnegie-Mellon University.  The major changes are summarized
here; for the minor changes and more details, see the SAIL manual update,
SAIL.UPD[AIM,DOC].

 1. The compiler runs with its own sharable upper segment of 28K.

 2. A save-and-continue facility has been implemented.  This allows a group
    of header files to be compiled once and later used to produce many separate
    .REL files.  This feature is similar to the operation of UNIVERSAL files
    in FAIL or MACRO.

 3. A new runtime routine, EDFILE("file",line,page,bits[0]) provides an easy
    link to either E or SOS.
*27 Sept 1975	RAID POINT mode input	JBR

Meta <.> (that's pronounced POINT) followed by two or three values
(not containing comma) separated by commas, causes a byte pointer to
be assembled with the same value that FAIL would generate for
POINT VAL1,VAL2,VAL3 with the exception that decimal radix is not forced
for VAL1 and VAL3 as in FAIL.  If the trailing comma and VAL3 are
omitted, then 44 octal is used for the position field. 
*13 Oct 1975	FINGER	LES

The system command "FING" shows data on all jobs, in order by
programmer initials.  The "IDLE" column shows the time, in minutes,
since the given job was last in the RUN queue.  If the job is
currently in the STOP queue, a "." follows.

The command "FING <people list>" shows data only on the specified people.
For example, "FING JMC,DAVE,HERSK" requests information on programmer JMC
and anyone whose first or last name begins with "DAVE" or "HERSK".
String matching uses the following precedence:
  1) exact match on programmer initials,
  2) exact match on friendly or last names,
  3) match on leading characters of friendly or last names.
If a given string matches more than one person at a given level, it
reports "ambiguous" and lists their names.

For people who are not logged in, it tells when they last logged out
and shows their plan file, if any.

			FILE LISTS
Arguments in the FINGER command are separated by commas and/or spaces.
An argument of the form "@<file name>" causes that file to be read.
Files can include references to other files, ad nauseum.  In files,
everything to the right of a semicolon on a given line is ignored,
so that comments can be put there.

The default file extension is "DIS" and the default PPN is "[P,DOC]".
Thus if you say "FING @H", it will first look for a file in you area
called "H".  If that doesn't exist, it will next try "H.DIS" in your
area and, if necessary, "H.DIS[P,DOC]", the latter being the list of
hand-eye people which is kept in [P,DOC] along with other group lists
(see SAIL Telephone Directory).

			SWITCHES
The argument list may also contain switches of the form "-PLAN" or
"-LOGOUT", which suppress the output of plan files and times of
last logout, respectively.  These may be abbreviated to as little
as "-p" and "-l".  Thus, if you give the command "FING @VB @M-L"
you will get information only on people in the Volleyball and Music
Groups who are logged in.
*25 Oct 1975	SNAIL (the new RPG)	MJC

SNAIL, the new RPG, is finally up.  It is currently run for all of the old
RPG commands except the edit commands (EDIT, CREATE, TECO, MAKE), which
will be added soon.  The writeup (which will appear as an appendix in the
the new edition of the Monitor Command Manual) is in SNAIL.MJC[S,DOC].

Differences between SNAIL and RPG are the following (see also NEWS entry of
29 Oct 1975):

1.  SNAIL is bigger.  It contains lots of debugging checks and display routines
    for working storage; these will go away after a suitable length of time,
    and SNAIL will then be about the same size as RPG.

2.  SNAIL uses tmpcor files instead of disk files for intermediate storage.
    When all relevant processors are converted to use tmpcor command files,
    the tmpcor file names will be as follows:
       tmpcor  processor
	FAI	FAIL
	SAI	SAIL
	MAC	MACRO		Currently still uses QQMAC.RPG
	F4	FORTRAN		Currently still uses QQFORT.RPG
	PAL	PALX		Currently doesn't read any command files
	PUB	PUB		Currently still uses QQPUB.RPG
	POX	POX
	CRF	CREF		Currently still uses QQCREF.RPG
	LOD	LOADER		Currently still uses QQLOAD.RPG
	LNK	LINK
	ED	Editors		Currently still uses QQSVED.RPG
	CM	SNAIL command file
    When tmpcor storage runs out, SNAIL creates files named nnnxxx.TMP, where
    nnn is the user's job number and xxx is the name of the corresponding 
    tmpcor file.
    (***** See also NEWS item of 1976 Jan 18. *****)

3.  SNAIL accepts four new commands:  POX, RER, RERUN, and PROCESS.  The POX
    command runs POX on the specified file.  The other three commands load the
    system line editor like DO does, only faster.
    RER processor {core size}↔string	swaps to the specified processor after
					loading the string into the line editor.
    RERUN processor {core size}↔string	does the same thing as RER, but finds
					the processor from device DSK instead
					of device SYS.
    PROCESS string			loads the string into the line editor.
    Occurrences of double-arrow ("↔") in the string are converted to carriage-
    returns; none of the other substitution features of DO are implemented.
    A carriage return is supplied at the end of the string.  The core size
    argument for the RER and RERUN commands is optional (that's what the braces
    mean -- don't type them in the command).  The double-arrow preceding the
    string must appear, however, for the RER and RERUN commands as well as for
    the PROCESS command.

    All of the new commands are written into the CM tmpcor file.  When SNAIL
    scans a command with no arguments and consequently reads the CM file, it
    checks to make sure the command from the file is compatible with the 
    command from the terminal.  COMPILE, LOAD, EXECUTE, TRY, PREPARE, and
    DEBUG are all compatible only with each other; RER and RERUN are compatible
    only with each other; and POX, PUB, and PROCESS are compatible with no
    other commands.

4.  The TV and CTV commands have been eliminated.

5.  If the creation times on the source and .REL files are the same, loading
    is done instead of recompiling.

6.  Device names are now treated correctly, e.g., specifying SYS: on a library
    file isn't ignored anymore.  A source file from device TTY: concatenated
    to any other file forces compilation (e.g., FAIL will always be run when
    the command LOAD TTY:+FOO.FAI is given).  Also, device TTY: does not need
    a file name.

7.  Switches are now listened to somewhat harder than extensions.  For example, 
    EX FOO/SAIL now works if there is only a file FOO.XXX, or if both FOO.SAI
    and FOO.FAI exist.  However, it is still not possible to persuade SNAIL to 
    run FAIL on FOO.SAI, and saying FOO.SAI/FAIL will generate an error message.

8.  CREF generates a .LST file rather than doing output directly to the line
    printer.

9.  The PUB command doesn't run FAIL any more.  (I know you're all sorry to
    see this go.)

10. An ETV directory in a command file specified by an at-sign ("@") is now
    ignored.

11. Switches to the LINK loader appear following a percent sign ("%"), like
    switches to LOADER; the first non-blank character after the percent sign
    is taken to be the switch delimiter, and the switch string is everything
    up to the next occurrence of the delimiter character.  Example:
	LOAD/LINK FOO%"RUNCOR:15"
    The /LINK switch indicating to SNAIL which loader will be used must appear 
    in the command line before the switches to LINK.

12. If all files in the command string are SAIL files, and the command specifies
    a debugger (TRY, PREPARE, DEBUG), BAIL is assumed to be the desired debugger.  
    SNAIL adds "27B" to the binary compiler switches for the first file to be 
    compiled; if no files will be compiled, SNAIL assumes that one of the .REL
    files already contains the load request for SYS:BAIL.REL and therefore does
    nothing.  Since neither LINK nor LOADER knows enough about BAIL to let it
    take immediate control at execution time, the DEBUG command is changed to
    the TRY command when BAIL is the only debugger loaded.

13. There are several new and different switches.  A minus-sign ("-") preceding
    a switch now specifies negation of that switch; hence several switches 
    which formerly were negations of other switches are now eliminated (NOLIST,
    NOSEARCH, NOTFORWARD, NOCOMPILE, LOAD).  Switches dealing with the loader
    may not be negated.  A few switches are renamed for greater mnemonic value
    (SAVE = old DUMP, PROCESSOR = old NONSTANDARD).  The switches NSAIL, OSAIL,
    and PUB have been eliminated.  New switches are the following:
	/LONLY		Only make a listing for this file; generates the
			command line ",FILE←FILE".  Implies /COMPILE.
	/CONLY		Only make a cref listing for this file; generates the 
			command line ",FILE/C←FILE".  Implies /COMPILE.
	/DDT		Load DDT if the command specifies a debugger.
	/RAID		Use RAID if the command specifies a debugger.
	/BAIL		Use BAIL if the command specifies a debugger.
	/LINK		Use LINK to create the core image.
	/LOADER		Use LOADER to create the core image (default).
	/NOCMFI		Don't generate a CM tmpcor file.
    The REL switch now means "use the REL file if it exists, and the source or
    dump file otherwise" rather than "always use the REL file".  The SAVE switch
    is not necessary when the left-arrow construct is used.

14. Switches may now be specified on a command with no arguments (for example,
    TRY/COM is now legal).  Effectively, the switches specified from the
    terminal are added to the end of switches appearing after the command
    in the CM tmpcor file, and may override the switches appearing after the
    command in the file.  Examples:
	command		contents of file	equivalent to
	TRY/COM		    EX FOO		 TRY/COM FOO
	TRY/LONLY	    EX FOO	   	COM/LONLY FOO
	EX/-LONLY	 COM/LONLY FOO	   	   EX FOO
	EX/-LONLY	 COM FOO/LONLY	     EX/-LONLY FOO/LONLY

A number of compatibilities with the old RPG have been preserved in order to
ease the transition to SNAIL.  SNAIL will reside on SYS:RPG.DMP for awhile
(although running under job name SNAIL) until processors like DO which swap
to RPG are updated.  The edit commands will run a copy of the old RPG 
(SYS:ORPG.DMP) until these commands are implemented in SNAIL.  The QQxxxx.RPG
disk command files will be generated for FORTRAN, MACRO, PUB, DO, CREF,
and LOADER until these processors are converted to read from tmpcor files;
tmpcor files with the appropriate names are also generated for these processors.
*26 Oct 1975	RAID	JBR

1. RAID now knows about the opcodes DFN and UFA.

2. RAID now accepts E mode floating point typein of the form
nnnn.mmmmExxx  where mmmm may be omitted and + may be omitted
after the E.

WARNING:  The larger the magnitude of the exponent you use, the
less accurate the value is.  This is because FAIL doesn't really
understand floating point.  When FAIL is fixed RAID will be fixed.
Meanwhile, you can check your values by letting RAID tell you what
you have.

3. The command <control>& has been changed to open the block that
contains the symbol being typed out for the value of "dot" (not to
be confused with the contents of dot).  This command used to open
the block containing the last symbol typed in.
*29 Oct 1975	SNAIL	MJC

More differences between RPG and SNAIL:

The function of the semicolon in command files now means "ignore text up
through the next line-feed", just like for monitor commands.  CRLFs in
command files are completely ignored.  Whereas RPG required semicolons
whenever a command line was continued (e.g. when using the plus construct),
SNAIL does not require them.  However, SNAIL does require punctuation 
between the various compilation commands, even though they are separated
by a crlf; for example,
	LOAD @XXX
where XXX contains
	FOO=FOO1
	BAR=BAR1
would have worked with RPG, but since SNAIL reads it as 
	FOO=FOO1 BAR=BAR1
an error message is typed.  A comma should appear between the two
specifications.

When RPG was given a command to compile a file on some other disk area,
for instance, with the command LOAD FOO[2,MJC] where the current disk area
is [1,MJC], it checked dates on REL files as follows:
1.  if FOO.REL[2,MJC] existed, it was used, whether or not FOO.REL[1,MJC] 
    existed;
2.  if FOO.REL[2,MJC] didn't exist but FOO.REL[1,MJC] did, FOO.REL[1,MJC] 
    was used;
3.  FOO.REL[1,MJC] was generated when the REL file was created before the 
    source file.
SNAIL, on the other hand, always checks first on the user's own disk area
to find a REL file to use, the rationale being that that's where the REL
file would be if one had been generated by some previous command.  If no
REL file exists on the user's own disk area, the directory specified on the 
source file is checked, so that the REL file in the directory where the
source file came from can be used if it was created after the source file
was compiled.  In the example above, the following would result:
1.  if FOO.REL[1,MJC] exists, it is used for date checking;
2.  if FOO.REL[1,MJC] doesn't exist but FOO.REL[2,MJC] does, the latter
    is used for date checking;
3.  whatever REL file is used, if its date disqualifies it, FOO.REL[1,MJC]
    is generated.
The REL file to be checked can be specified explicitly by the user, using
the equal-sign construct.  If a ppn or device is specified with a file name
followed by an equal-sign, that REL file is used for date-checking.  If
the specified REL file doesn't exist or its creation date was earlier than
that of the source file, SNAIL will generate a command to compile the source
file with the binary file being the one specified with the equal-sign;
however, some processors ignore ppns and devices on binary file specifications,
so the REL file may end up on the user's own disk area anyway.
*30 Oct 1975	Bureaucracy: Computer time usage	LES

To find out how much computer time has been  used by any given group,
say
.R BUREAUCRACY		(actually, just "R BUREAU" will do).
The program will ask for  dates, PPN lists, and output form.   If you
give  null   responses  (CR)  to  all   requests,  the  program  will
automatically show a summary of computer utilization by  project from
the beginning of the current year through yesterday.

Data covered include number of PPNs, number of logins, job hours, CPU
minutes, core  K minutes, and "Doubloons"  (an approximate measure of
overall cost on  an arbitrary scale).   The entries  are in order  of
decreasing doubloons, except that "All others" is always last.

			DATES

Alternatively, you can  "roll your own".   The raw data is  stored by
PPN for each month over the past year and for each year back to 1971.
When it asks  for dates,  you can say something like "Jul:Oct", which
may or may not work.  If  the current date is December, this gives
you data  for the  current year.   If the current  date is  May, last
year's data is used.  If you say that in July, August,  or September,
it will simply complain.  It doesn't hurt to ask.

If you say just "May" then you get data for the last instance of that
month only.   If you say  ":May" you get data  from 1 January through
May.  If you say 72 or  1972, you get data for that entire year.   If
You mention the  current year, or if you just  hit <carriage return>,
you get year-to-date data.

			PPNs

When the program asks for PPNs, you can say something like:

Bureaucrats:JMC,LES,TW; Bad guys:REG,[SPL,SYS]; Classes: [206],[225]
which will gather data on three groups, separated by ";". Labels (one
or more  words ending in ":") may appear  anywhere in the group list.
If you omit labels,  the groups will be  named "Group 1", "Group  2",
etc.

More generally, the following elements may appear in PPN lists:

group label:pn,[pj],[pj,pn],[*,pn],[pj,*],@file,@@,/SUMMARY

Nothing need be capitalized.  [pj] is of course equivalent  to [pj,*]
and pn means [*,pn].  If a given PPN qualifies for membership in more
than one group, then [pj,pn]  takes precedence over [pj,*], which  in
turn outranks [*,pn].  If you  mention exactly the same thing in more
than  one group the  program will grumble, but  will ignore conflicts
and continue.

Now about the "@file" gizmo: This lets  you compose a horrendous list
as a  text file and gobble it into the middle  of the line.  The file
name may contain a PPN.  Any TV/E directory or SOS line  numbers will
be ignored.   While the on-line  response is restricted to  one line,
the  text file may  contain many  lines.  It  will be read  as if the
carriage returns don't exist. You can go indirect any number of times
and  any  number  of  levels,  though  string  space  may  freak  out
eventually.

The "@@"  form says "go read  the telephone list".   This will assign
everyone to  groups on the basis of project affiliations given in our
telephone directory.   Individuals who are  in more than one  project
are  arbitrarily pushed into  the first  one on  their list.   People
without a listed project are dumped into "Miscellaneous".  Of course,
this  still  leaves a  few  "outlaws"  who  are  not on  any  of  our
authorized  user lists.   You can precede  the "@@" with  one or more
group  lists of  your  own,  which  will  take  precedence  over  the
directory groupings.

			OUTPUT

After the  data  is generated,  the program  repeatedly  asks for  an
output specification of one of the following kinds:
 <blank>		type a summary
 *			type detailed listing
 S			spool a summary
 S*			spool details
 <file>			save summary in file
 <file>*		save details in file.
 .			loop back to respecify PPNs and dates.

On reruns, the null reply to PPN and  Date questions means "just like
last time".  Thus,  you can easily ask for data from a different time
period with the same  cast of characters, or  for the same time  with
another group.
*4 Nov 1975	Pub Update	LES

There is an update to the Pub Manual and a Summary Reference/Index in
PUB.UPD[S,DOC].
*6 Nov 1975	PALX		JBR

PALX has been added as a standard processor.  This means you can say
COMPILE FOO to have PALX assemble FOO.PAL.  SNAIL will check to see
that the date on the .PAL file is not earlier than the date on the
corresponding .BIN file.  Shortly, if you say TRY, LOAD, PREPARE,
EXECUTE or DEBUG with a .PAL file, PALX will be run and it will swap
to 11TTY when it is done.
*11 Nov 1975	Phone Call Logging	LES

Our procedures for reviewing telephone toll  calls have gotten rather
complicated lately.   At the same time,  there is increasing pressure
from the  government auditors  to justify  each call.   One  possible
solution would be to maintain written  logs on each phone and collect
these  once  a  month.    I would  like  to  try  an  equivalent but,
hopefully, easier approach: the use of a logging program, as follows.

We want records on all toll and message unit calls.  Tie-line and "9"
calls to the immediate area (e.g.  Redwood City through Moutain View)
don't count.  After you complete  such a call, please log in and  say
"R  PHONE".   It will  ask  a series  of questions  about the  number
called, the place, and who pays (ARPA, NSF, or whatever).

If you are confused about who should pay for a given call, please see
me or send me  a message.  You can  hit "CALL" any time up  until you
answer the last question (who pays) and the entry will be flushed.

If the computer is down, please keep a  scribbled record and enter it
at the next  opportunity.  To the extent possible, I would appreciate
it if you could enter recent history back to November 1.

People with Lab-provided home  phones should use this same  procedure
for logging calls made on those lines.

Please  be careful  to use  tie lines  where appropriate  rather than
blindly  dialing  "9".   The  government auditors  are  attempting to
disallow all such misdialed  calls.  That means the  Computer Science
Department gets stuck with the bill, and much anguish.

For  personal  calls, we  request  that you  place  them through  the
outside operator and have  them billed directly  to your home  phone.
If you don't  do it that  way, we not only  have to extract  the cost
from you,  but we have  to convince the  auditors that  we collected,
which is more hassle than we care to deal with.

I  regret  having  to  add  this  administrative  burden,  but  other
alternatives appear to be worse.
*20 Nov 1975	RCV output to ETV-formatted files	ME

RCV now handles ETV-format files.  There are two ways RCV can
encounter an ETV-format file: on input and on output.

When RCV does output (by the "T" (transfer) or "C" (copy) option) to
a file which has an ETV directory, any messages thus output are added
at the end of the output file with the first such message preceded by
a Formfeed.  Thus all messages transferred at one time to an
ETV-format file will be put together on a new page of that file.
However, each time an output filename is given to RCV, another new
page is begun on the output file (if it is in ETV format).  Output
files that are not formatted for ETV are handled just like
always--the new messages are output to the beginning of the file and
will be followed by the messages that were already in the file.

When you RCV a file which has an ETV directory, the directory is
invalidated but retained so that future MAILing or RCVing to that
file will continue to find the directory and thus append new messages
at the end of the file.  When RCV invalidates an ETV directory, it
issues a warning message telling so.

Also, RCV now reports whenever it is creating an output file.

And finally, if RCV cannot access the output file, it lets you retype
the option line.  (It used to report the lossage and then die.)
*20 Nov 1975	ETV and extended files--directory extending/updating	ME

ETV can now handle easily almost any file that has been extended by
another program even though the directory has not been updated by
that program.  The single restriction is that the file must remain in
correct ETV format with Formfeeds occurring only as the first
character in a record.  When ETV encounters a file that is longer
than the directory indicates, the file is read from the last
indicated page to the end of the file to make sure that the file is
properly formatted.  If the file is formatted ok, then ETV generates
in core an updated version of the directory, including directory
lines for any new pages added to the file.  The updated directory is
normally not written out onto the disk until some command forces one
or more other pages to be written on the disk.  However, the ⊗XUPDATE
command immediately writes out the updated directory, if any.  As
long as the updated directory remains not written out on the disk, a
"U" (for update) is displayed on the top line of the screen.  The
first time any page is changed and written out, or when the ⊗XUPDATE
command is given, the updated directory will be written out and the
"U" will disappear.

When ETV opens a file that has been properly extended in the above
manner, it reports the number of pages that have been added to the
file, or, if none, the number of records by which the last page has
been extended.  Also, if any pages have been added, the default
position within the file (at which ETV will place you if you gave no
specific page number in a /#P switch) is the first newly added page.
*2 Dec 1975	MAIL EVENT PLAN	ME

[Note--The file MAIL.BH[UP,DOC] does NOT yet reflect the following changes.]

Any mail files caused to be created by MAIL are now usually created
in ETV format with a directory page.  The /-E switch can be used to
override this default except that output to normal message files
(*.MSG[2,2]) and output to plan files (*.PLN[2,2]) ignore this
switch.  New *.MSG[2,2] files always get ETV directories and new
*.PLN[2,2] files never do.  The recommended program for reading mail
is now ETV; give the monitor command "ET ∂" to read your own mail,
which will be in chronological order with one message on each page.
ETV will automatically position you on the first page which was added
to the file after the directory was last written, and that page will
usually contain the first message you haven't yet seen, with later
messages on later pages.  Also recommended is use of the /SUBJECT
switch to include a subject on the header line when mailing; the
subject will show up on the ETV directory when the mail file is read.
Use "ET ∂PRG" to read the mail of someone whose programmer name is
PRG.  See pages 23 and 25 of E.ALS[UP,DOC] for ETV documentation
relevant to reading/handling mail with ETV.  RCV will still work for
reading mail, but since messages are now stored in chronological
order, RCV will present them in that order.  Also, RCV will have to
invalidate any ETV directory it finds in a mail file.  Note that for
any mail file already existing without an ETV directory, MAIL will
still put new messages at the beginning of the file.  Only the
default format for new mail files being created has been changed.

TO AVOID CHANGING THE FORMAT OF SOMEONE ELSE'S MAIL FILE, PLEASE NOTE:
Since mail files are now in ETV format, please use ETV if you need to
edit someone else's mail file (e.g., to edit a message from you); for
example, ET ∂PRG edits PRG's mail file.  If ETV asks if you want to
reformat the file, control-C out and use RCV instead since the file
is not in ETV format, presumably intentionally.  If you accidentally
use RCV on an ETV file, you will be warned by the message
	[Invalidating ETV directory.]
If you get that message, you can control-C out without having altered
the file in any way and then use ETV to edit the file.  If you must
continue with RCV on such a file, then the text of the file will be
preserved okay except that the directory page will be invalidated and
any pagemarks (formfeeds) will be deleted, thus destroying any page
structure the file may have had.

The PLAN command now requires an expiration date.  The date can be
included as PLAN/DATE=2-JAN ... or as just PLAN 2-JAN ....  If you
don't want your plan ever to expire, give it a late date.

The header generated for local mail no longer contains the sender's
project name.  Only the programmer name is included (along with date
and time).

A blank line is added at the end of each message unless there is
already an empty line there.  This is for separating the text of
different messages.  SEND leaves off the extra blank line when typing
the message on terminals.

The EVENT command accepts an optional time of day in addition to the
required date of the event.  The date MUST be given BEFORE the time.

Events scheduled for a Sunday are listed on Friday, Saturday and
Sunday.  Events scheduled for a Monday are listed on Friday,
Saturday, Sunday and Monday.

The EVENT command will now accept events scheduled for the current day.

Like other commands, the EVENT and PLAN commands can now be used with
no argument to effect hand-holding mode in which the program will
prompt you separately for each argument you are supposed to supply.

The 6 verbose lines of initial message in hand-holding mode have been
flushed.

The correct PPN of a distribution-list file is now included in the
distribution list.

In the distribution lists, filenames with leading or embedded spaces
are printed with underbars in place of the leading and embedded
spaces.

The /-HEADER switch does not affect output to OUTGO.MSG files.

A bug in recognizing down-arrow (↓) and double quote (") to quote
strange filenames has been fixed.  If you want to mail a message to a
programmer name that has no file areas, you can use the mail-to-file
construct like this: MAIL #↓___QWE↓[2,2] where _ represents a space
and QWE is the programmer name you want to mail to.  Double quotes
can be used instead of down-arrows.

A bug in reading leap-year dates has been fixed.

A bug in the listing of event messages in OUTGO.MSG has been fixed.

A bug in hand-holding mode that occurred when there were no TO
destinations (CC destinations only) has been fixed.

A minor bug in the use of αβE to use ETV to edit messages started by
the commands GRIPE, PLAN, BATCH and EVENT has been fixed.
*4 Dec 1975	REMIND MAIL	ME

Reminders delivered by the mail system are now indicated by an
asterisk appearing in the header line just before or after the
programmer name.  In reminders queued before 2-Dec-75, the header
includes the PPN of the originator with an asterisk between project
and programmer (formerly a slash here indicated a reminder).  In
reminders queued after the project was taken out of the header, the
asterisk will follow the programmer name.

Examples:

Old plain mail:	NS,ME
Old reminder:	NS*ME
New plain mail:	ME
New reminder:	ME*


Also, the header line for mail sent by a person logged in over the
net now includes "via HOST" instead of "@ HOST", where HOST is the
host from which the person was connected to us when the mail was
sent.  The programmer name given in the header line is the SU-AI name
under which the person was logged in.  The former convention could
have been mistaken to mean the programmer name given was a defined
name at the foreign host instead of at SU-AI.
*7 Dec 1975	Reference Register	LES

The distance from our Lab to the campus libraries often makes it
important to know "Who has X?" The file REFER[BIB,DOC] is intended to
function as a voluntary register.  You are invited to list as much or
as little of your holdings as you like.  Listing things there does
NOT constitute either an assertion that you are willing to lend them
to anyone or that they are physically located in the Lab.

The listing should state your lending policy, such as one of the following.
  Open Shelf	Help yourself, but bring it back as soon as possible (or
		within a specified time).
  Sign-out	There is a sign-out sheet somewhere around the collection;
		please register.
  Xerox		You may borrow it just long enough to make a copy.
  Negotiable	Please talk to the owner.


                               FORMAT

Each list should be on a separate page with the owner's name at the
top (last name first) and the pages should be in alphabetical order
by name.  The top line should also give the date last changed.

Next, the lending policy should be given followed by the list of materials,
preferably organized in some way, such as
  Conference Proceedings
  Periodical Collections
  Other Periodicals (i.e. things that you are receiving but not collecting).
*10 Dec 1975	MAIL /SUBJECT	ME

In view of the general usefulness of having subjects in messages, the
MAIL command will now prompt you for a subject if you don't include
either a subject or some message text in the command line, except
that MAIL to * is never allowed to have a subject (since it would
usually not get seen--you can, however, do a SEND * with a subject if
you say SEND/SUBJECT *).  You can suppress the above mentioned prompt
for a subject by including the global /-SUBJECT switch in the command
(note that this switch can only be used globally).  Also, when MAIL
does prompt you for a subject, you can type just carriage return for
a null subject.

And MAIL will now accept and distribute an empty message provided
there is a subject.
*11 Jan 1976	RCV:NOMAIL OPTION	ME

RCV:NOMAIL in OPTION.TXT will cause RCV to ignore your main message
file when you give the RCV command with no argument.  This is
designed for people who use various RCV features (such as DIGEST
option and deleting purger notices) but who use E to edit their mail.
To override the NOMAIL option, simply use the command RCV PRG where
PRG is your programmer name.

Also, "RCV \" and "RCV \PRG" commands now edit News Service
notifications only (for current user and user PRG, respectively).
Formerly these commands edited the notifications followed by all the
normal mail files.
*15 Jan 1976	E: FILEHACKS, NEW COMMANDS FOR TTYS	ME

The filehacks that COPY allows
are accepted by E to allow easy abbreviation of certain filenames.
Also, some new extended commands have been added to allow Teletype
users to utilize some old commands that are called with
special characters not generally available on such terminals.


FILEHACKS:

The following filehacks, also usable with the COPY program, are
available in E.  The file represented by each is indicated; all these
files are on the [2,2] disk area.  A filehack consists of a backslash
followed by a name from the list below; the name may be abbreviated
by as many letter as necessary to identify it uniquely (current
abbreviations are given below).  A filehack takes the place of the
filename and can be followed by the usual switches.  Note that some
of the files below are not usually maintained in E format; beware.

FILEHACK  ABBR  FILE
\MAIL	  \M	The current user's mail file.
\MSG	  \M	The current user's mail file.
\GRIPES	  \G	The system gripe file.
\NOTICE	  \NO	The system message file: NOTICE.TXT[2,2].
\NAP	  \N	The current user's NS notifications file.
\NS	  \N	The current user's NS notifications file.
\DOWN	  \DO	The system downtime forecast file.
\DAY	  \DA	The message-of-the-day file.


NEW EXTENDED COMMANDS PROVIDED MAINLY FOR TELETYPE USERS:

The following extended commands do exactly the same thing as the
corresponding single-character commands for which they were named.
Note that some of the single-character commands are impossible to
use on Teletypes because they are intercepted by the system as
special control functions (eg, ↑U clears input line being typed).
See E.ALS[UP,DOC] for details of the functions.

Extended	Equivalent Single-Character Command
Command

XEXIST		∃ (there-exists sign, octal 025, ↑U (intercepted by system))
XLAMBDA		λ (lambda, octal 010, ↑H) Switches files.
XLOOKUP		λ (lambda, octal 010, ↑H) Switches files.
XEPSILON	ε (epsilon, octal 006, ↑F) Switches files.
XENTER		ε (epsilon, octal 006, ↑F) Switches files.
XPARTIAL	∂ (partial-sign, octal 017, ↑O (intercepted by system))
XMSG		∂ (partial-sign, octal 017, ↑O (intercepted by system))
*18 Jan 1976	SNAIL	MJC

The monitor commands CREATE and EDIT (for the SOS editor) and MAKE and
TECO (for the TECO editor) now run SNAIL instead of RPG.  All functions
of the old RPG have now been taken over by SNAIL.

SNAIL no longer writes disk files (QQxxxx.RPG) for F4, CREF, MACRO, or
LOADER.  Instead, SNAIL writes tmpcor file FOR, CRE, MAC, and LOA,
respectively.  (This list of tmpcor file names updates the list specified
in the NEWS item of 25 Oct 1975, and renders part of the latter list
obsolete.)
*3 Feb 1976	DO, BATCH/DO	ME

The character translation done by the DO program and by the BATCH
command with the /DO switch has been changed to make representation
of the CONTROL and META bits conform to that generally used in the
documentation.  The only characters involved in this change are
listed below along with their new meanings.

Input character		Translated into

α (alpha)		<CONTROL> bit added to next character
β (beta)		<META> bit added to next character
λ (lambda)		↑C (i.e., <deferred CALL>)

Also, the DO program now ignores E directory pages and all Formfeeds
occurring in an E-format file.  Note that BATCH passes unchanged the
character vertical bar (|), so it is not possible to combine several
DO-style functions in a file to be read by BATCH.
*1 Mar 1976	Automatic beeping, ESC Z, BREAK Z, TTY BEEP	ME

ESC Z or TTY BEEP will now cause your TTY to be beeped when your job
has finished doing something that took more than 15 seconds.
BREAK Z or TTY-BEEP disable this feature.  Also, LOGIN:BEEP in your
OPTION.TXT file will cause LOGIN to enable automatic beeping for you.

More precisely, if you are enabled for this automatic beeping, then
you will be beeped ("bell"ed on a non-display) when your job enters
STOPQ, or IOWQ for TTY input, or INTWQ for TTY interrupts only,
provided that your job's incremental wait time is 15 seconds (real
time) or greater.  A job's incremental wait time is the amount of
time spent waiting for the system since the last command was given
that caused the program to leave TTY input IOWQ or STOPQ.  This wait
time corresponds precisely to the incremental run time displayed on
the wholine--both incremental times are reset at the same instant.
Also, if you type BREAK X or TTY NO UPDATE or a similar command which
causes the incremental times never to be reset, then you will never
be beeped automatically (until you type ESC X or TTY UPDATE or other
similar command to restore the resettability of the incremental
times).  Non-ARPA PTYs are never beeped.

Note that beeps are never mapped--they always go to the specified
physical terminal.  If you map to some terminal other than the one at
which you are sitting, then please do not enable automatic beeping
because you will never get any beeps sent to that terminal and
whoever happens to be at that physical terminal will get lots of
beeps that don't pertain to him.  If you are using a physical
terminal to which someone else is mapped and thus are getting all of
his beeps (that is, if someone else is mapped to your terminal and
you are mapped somewhere else), then you can (should) disable beeps
altogether since you will only get beeps intended for the person
mapped to your terminal.  (Someday beeps may be mapped to appropriate
terminals.)
*31 Mar 1976	COPY DIRECTORY/UFDPRO SWITCH	ME

The new /UFDPRO switch in COPY causes the DIRECTORY command (or
/SEARCH switch) to type out the UFD protection and the UFD's default
file protection for each PPN for which a header is listed.  These two
protection codes are output on the PPN's header line in the following
form:

   [1,ME]	UFD PRO=405; DEF PRO=000

The /UFDPRO switch (which currently can be abbreviated /U) is implied
by /FULL and by /PROTECTION (in a DIRECTORY command).  The /FULL
switch now prints this header line in addition to listing each file's
PPN on its own line.

To get just these protections typed out (without listing any files),
use /Q/F/U, e.g.,

DI/Q/F/U

Like the other directory switches (/PROTECTION, /WRITER, /DUMPED,
etc.), the /UFDPRO switch is sticky no matter where it occurs.  For
instance, to see the UFD protection and the dump date of files named
FOO and BAZ, use:

DI FOO,BAZ/DUMP/UFD

Note that if none of the files named exists, then the PPN header is
not printed and so the UFD protection will not be listed.
*2 Apr 1976	SEND MESSAGES TTYMES NULMES	ME

The TTYMES and NULMES UUOs have been modified to type out the given
message on both the current PP (piece of paper) and PP number 0 if
all of the following conditions are true: 1) the destination terminal
is not your own specified by device 'TTY'; 2) the destination
terminal is a display whose current PP is not PP 0; 3) the
destination terminal is not "holding" terminal output.  If conditions
1 and 2 are true but terminal output is being "held", the message is
output only on PP 0.  If either of conditions 1 or 2 is not true, the
message is output only on the terminal's current PP.  Thus the
message is always output to PP 0 unless the destination terminal is
your own and is specified by device 'TTY'.

(Note of explanation: PP 0 is the normal PP used for echoing and
program typeout.  E and certain other programs select other PPs for
typeout while the program is running.  A RESET reselects PP 0.)

This means that if you receive a message while you are using E or
some other program that uses some PP other than PP 0, you can see the
message (as typed out on PP 0) by typing BREAK N (which selects and
redisplays PP 0).

Accordingly, the SEND command in MAIL has been modified such that it
will not give the warning "nonstandard page printer geometry may
obscure message" if either the current PP or PP 0 is of the default
dimensions.  In particular, if the destination user is running E, the
warning will not normally be given since the recipient can see the
entire message by typing BREAK N (unless, of course, the message is
too long to all fit on the normal whole screen!).
*1 Apr 1976	LOADER POLISH LINK-10		JFR

Polish loader blocks have been extended with new operators and store
operators.  The modifications allow conditional loading and
setting the value of link/linkend without using a link/linkend block
(block type 12).

The modifications have been installed in both LOADER and LINK-10 at
Stanford, and the code for the changes to LINK-10 has been forwarded
to DEC for incorporation into the LINK-10 distribution files.

New sub items in Polish loader blocks (type 11):

Store operators:
	-7	MOVEM op1,(op2)
	-10	store op1 as the value of link (block type 12) op2
		[linkend of -op2 if op2<0]

Operators:
	20	maximum
	21	minimum
	22	if op1=op2 then -1 else 0
	23	fetch value of link  op1  [linkend -op1 if op1<0]
	24	definition characteristic--consider operand as
		RADIX50 and return 0 if unknown, 1 if known but
		undefined, -1 if known and defined
	25	skip  op2  half-words of Polish if op1 neq op2;
		skip forwards if op2>0 and backwards(LINK-10 only)
		if op2<0; the skipping is done after relocation
		words are taken into account; in any case, return 0.
	26	skip to just beyond the next END block if op1 neq 0
	27	MOVE--get loader's current idea of what will be in
		location  op1  when loading is complete (not counting
		linkend processing)

Each Polish block must contain a store operator, even if it is a dummy
and will never be executed.  Link numbers are specified as half-word
quantities.  To fetch the current value of link 1 and store as linkend 2,
the polish block would look like
	11,,3	;polish block,,3 data words
	0	;no relocation
	23,,0	;fetch link/linkend,,half-word operand is next
	1,,-10	;link #1,,store link/linkend
	-2,,0	;linkend #2,,filler
*4 Apr 1976	FTP (LPPN and RPPN Commands)	BH

In a RETR or STOR command with both local and remote pathnames
given explicitly (RETR LOCAL=REMOTE), the remote pathname is not
scanned at all for local pathname definition purposes.  This
implies that the command
	RETR [PRJ,PRG]=REMOTE-FILE.EXT
will be considered a multiple retrieve, since there is an implicit
local pathname of *.* if none is given explicitly, even though only
one file is actually retrieved.  This procedure is considerably
slower than necessary, and may not work at all if the remote FTP
server isn't clever enough.  Thus, until now, it has been necessary
for best results to repeat the filename:
	RETR REMOTE.EXT[PRJ,PRG]=REMOTE-FILE.EXT

It would be nice to be able to say simply
	RETR REMOTE-FILE.EXT[PRJ,PRG]
but in a command with only one pathname, any PPN used has been assumed
to be intended as a remote PPN, for commands like
	RETR FILE.CMU[N900AR00]

FTP now allows the user to decide whether a PPN in a single-pathname
RETR or STOR should be used as the local PPN or the remote PPN.  The
commands LPPN and RPPN select the mode; the default is RPPN as before.
(An LPPN or RPPN command remains in effect until another is given.)
More specifically, in RPPN mode any text between square brackets is
passed to the remote server and is locally ignored; in LPPN mode the
text between brackets must be a correct local PPN and is not sent to
the remote server.  (As always, the closing bracket may be omitted
if the PPN is followed immediately by CRLF.)

Two-pathname RETR or STOR, and commands processed entirely by the
remote server (e.g., DELE), are not affected by LPPN/RPPN.  The
LPPN and RPPN commands do not require an argument.
*22 Apr 1976	PUB	RHT

PUB has been modified so that the "&" command character is now
effective for device xgp as well as lpt.  Thus:

	A↑[sup]&↓[sub]

will come out

	 sup
	A
	 sub

on the xgp as well as on lpt.  However, several warnings are in order:

	1. the vertical offsets for superscripts & subscripts are smaller
	   (on the order of half a line), so your superscripts & subscripts
	   may run together.

	2. PUB isn't too bright about character widths.  If your superscripts
	   and subscripts use non-standard width characters, you may get
	   some misalignments.  This is better than the previous situation,
	   where no backing-up at all was done for device xgp, but you may
	   have to fiddle around with extra blanks to get things to look right.

*27 Apr 1976	PUB	RHT

I propose to make some further changes to PUB's handling of XGP-mode
superscripts & subscripts.

Currently, the "↑" and "↓" commands only move the text about half a line
up or down.  PUB just IGNORES the increased line height that results
from this (hence the necessity of XGENLINES klugery).  Unless soemone
talks me out of it, I propose to fix this as follows:

(1) Increase the baseline displacement to approximately 3/4 line.

(2) Change the accounting so that PUB will believe that superscripts
and subscripts occupy a whole line of text.  This will avoid the lossage
whereby PUB puts more text on a page than will actually fit, but may
cause slightly "shorter" pages.

(A better fix for (2) would be to use XGP escape sequences to assure
uniform inter-base, rather than inter-line, spacing, but I'm afraid to
make such a drastic change to PASS2 of PUB.)

These changes should substantially improve the readability of PUB-produced
documents, especially those containing mathematical notation, and will
reduce the amount of fiddling around required to get correct pagination.

Anyone who can show cause why this will cause him irrevocable harm
should see me sometime in the next couple weeks.  (If you don't use
"↑" or "↓", then don't bother me -- nothing in this proposal can
possibly affect you).
*8 May 1976	PUB	RHT

A new pair of declarations has been added to PUB:

	DOUBLESCRIPT -- turns on feature
	SINGLESCRIPT -- turns it off (c.f., CRBREAK & CRSPACE)

In DOUBLESCRIPT mode, each subscript or superscript caused by "↑" or
"↓" is doubled if output is going to the XGP. (I.e., moves baseline
20 instead of a mere 10).

In SINGLESCRIPT mode, the script strength is 10 XGP units.

In both modes, the book-keeping has been improved to account for
the extra space occupied by scripts.

Documents (or outer blocks) that have neither mode declared use
standard (10) script strength and do not have the improved book-keeping.
Thus, they are unaffected by this new feature.
*23 May 1976	MAIL/-OUTGO  OUTGO.MSG	ME

A new global switch has been added to MAIL to allow suppression of
the saving of a copy of any mailed message in your OUTGO.MSG file (if
you have one--if you don't have one, this switch is useless).

The switch /-OUTGO suppresses output to OUTGO.MSG.  This switch is
global and can occur either after the command name (e.g., MAIL/-OUTGO
FOO%AI) or after any destination (e.g., MAIL FOO%AI/-OUTGO).
*27 June 1976	SNAIL	MJC

Some changes to Snail:
1.  The optional core size argument for the RER and RERUN commands now specifies
    the number of pages instead of the number of k (consistent with the R and
    RUN commands).
2.  Starting Snail at address increment -1 now runs an editor, so typing
    "E" or "T" to a Sail runtime error message will do the right thing.
3.  A slash may now be used to terminate a ppn (COPY and E already allow this).
4.  Typing "PROCESS @" to the monitor loads your line editor with the contents
    of the CM tmpcor file; this should be useful if you want to make a slight
    change to a long command previously typed.
*4 July 1976	SAIL FIX FLOAT KIFIX FIXR FLTR ADJSP	JFR

Summary: a new compiler switch, /nA with n octal, lets the user
request that KL10 instructions be generated for integer/real
conversion and for stack adjusting.  The default is to compile just
as before.  The bits for /A are
	 1  use KIFIX		The default is UUOFIX.
	 2  use FIXR		 "     "     "    "
	 4  use FLTR		The default is UUOFLOAT.
	10  use ADJSP		The default is SUB [n,,n]; or ADD [n,,n]
				  with overflow detection.

If requested by the user, SAIL will now compile certain KL10-only
instructions where appropriate.  These instructions are used only if
the user explicitly asks for them.  None of these instructions exist
on the KA10 or the PDP-6; programs which contain these instructions
will get the error "Illegal instruction" if run on the KA10 or the
PDP-6.  However, the new instructions are faster and permit shorter
code sequences to be compiled.

The instruction ADJSP (adjust stack pointer) saves a literal and a
memory reference compared to previous SAIL code, and also saves 2 or
4 words of entry code for recursive procedures with many local
variables.

The compiler also gives the user a choice of which instruction to use
when converting between integer and real.  There are three instructions
available for conversion from real to integer and two for conversion
from integer to real.

For real to integer conversion the choices are UUOFIX(opcode 003),
KIFIX(122) and FIXR(126); the effect of each is shown in the
following table.
    	real	UUOFIX	KIFIX	FIXR
	 1.4	 1	 1	 1
	 1.5	 1	 1	 2
	 1.6	 1	 1	 2
	-1.4	-2	-1	-1
	-1.5	-2	-1	-1
	-1.6	-2	-1	-2

UUOFIX is the default, is what SAIL has always used, and is different
from what the description given in the July 1973 manual.  In
mathematical terms, UUOFIX(x)=FLOOR(x)=[x] where [x] is the
traditional notation for the greatest integer less than or equal to
x.  This UUO requires execution of 18.125 instructions (32 memory
references) on the average.

KIFIX is what most people probably have in mind, and is the choice which
produces the action described in the July 1973 manual.
KIFIX(x)=SIGN(x)*FLOOR(ABS(x)). Many FORTRANs use the equivalent of KIFIX.

FIXR is a mistake in the KI10 hardware that was perpetuated in the
KL10 microcode.  FIXR(x)=FLOOR(x+0.5).  Note that FIXR(-1.5) is not
equal to -FIXR(1.5).

For integer to real conversion the choices are UUOFLOAT(002) and
FLTR(127).  FLTR rounds while UUOFLOAT truncates.  It only makes a
difference when the magnitude of the integer being converted is
greater than 134217728.  In such cases it is always true that
UUOFLOAT(i)≤i and FLTR(i)≥i.  UUOFLOAT merely truncates after
normalization, while FLTR adds +0.5 lsb and then truncates.  Most
users will never see the difference.  UUOFLOAT takes 18.625
instructions (32 memory references) on the average.

[For conversions involving SHORT quantities, the instructions used
are (Stanford only) KAFIX ac,233000 and (all sites) FSC ac,233.  Note
that since KAFIX is simulated by the system it is very expensive.
Most people do not use SHORT and need not bother about this.]

Now for how you can control all this.  There is a new compiler
switch, /A.  The value supplied is interpreted in octal as bits
controlling the various options.  The bits are
	 1  use KIFIX for real to integer converson
	 2  use FIXR
		;otherwise use UUOFIX
	 4  use FLTR for integer to real conversion
		;otherwise use UUOFLOAT
	10  use ADJSP whenever possible
		;otherwise use SUB, or ADD with PDLOV detection
The default is /0A; i.e., use none of the new instructions.

Note that the value of the switch can be altered within the program
by a statement of the form REQUIRE "11A" COMPILER_SWITCHES;.
*15 Aug 1976	Data Disc channel queueing, ESC CALL, BREAK CALL	EJG

When all of  the Data Disc channels are  in use, ESC CALL may  now be
typed  to enter your terminal  into a queue of  terminals waiting for
available  channels.    Your  terminal  will  be  beeped  if   it  is
successfully entered into the queue, and it will be beeped again when
a  channel is  made  available to  it.   You then  have the  usual 15
seconds to grab the channel by typing on it, before  it goes away and
is made available to the next person waiting in the queue.  If at any
time you change your mind and don't want a channel after all, you may
type BREAK CALL to remove your request from  the queue.  A successful
BREAK CALL is also acknowledged by the system beeping your terminal.

The  "No Data Disc Channels Left" message now  contains a list of the
first few entries in  the DD channel queue.   The leftmost number  is
the TTY number of  the first terminal in the queue,  etc.  Three dots
will  follow the last number  if there are more  entries in the queue
than there is room to  display.  The system WHOline entry  for number
of DD  channels in use now  includes the number of entries  in the DD
channel queue.  For example, 34 in the DD entry of the system WHOline
means 31 channels in use plus 3 entries in the channel queue.

A problem  could arise  if you  want to  enter your  terminal in  the
queue,  but your line  is in use  by someone else  mapped to  it.  To
resolve this, you may map to a terminal not in use (i.e. with the "No
Data Disc Channels Left" message showing) and then enter the queue by
typing ESC CALL.  When it is your turn  for an available channel, the
channel will  be given to the terminal to  which you mapped, but your
terminal, not the mapped one, will  be beeped, even if you have  said
BREAK  B to  disable  beeps  sent to  the  job  using your  terminal.
Remember  to listen for the beep  that means you successfully entered
the queue; if you don't get beeped then either the  system is down or
else someone  else has  mapped to the  same terminal and  enqueued it
first, so you should map elsewhere and try again.
*28 Aug 1976	SAIL FORTRAN-10; INPUT of '0; CASE statement		JFR
SAIL now permits FORTRAN-10 calling sequence for Fortran Procedures,
ability to read '0 characters using INPUT, and multiple explicit case
numbers in CASE statements.

To get FORTRAN-10 calling sequence for Fortran Procedures, use /20A switch.
The default is to use the old F40 calling sequence.

The following two CASE statements are now equivalent:
    CASE AE OF BEGIN [4] [1] S41; [2] [3] S23 END;
    CASE AE OF BEGIN [1] S41; [2] S23; [3] S23; [4] S41 END;

The SAIL runtime segment and libraries have been modified to allow
more flexibility in string input of zero characters (ASCII NUL, '0).
The function INPUT, which reads a character string from a channel,
used to always omit NULs, no matter what.  [Text editors like SOS and
E use '0 as a padding character, and this is probably why '0 was
always omitted.  But '0 is a perfectly good character (in .XGP files,
etc.) and since the break table can handle '0 just like any other
character it is hard to justify giving it special treatment.] INPUT
still omits NULs by default, but you can now use BREAKSET mode "Z" to
tell INPUT "do not automatically omit NUL; treat it just like any
other character, consulting the break and omit bits in the
breaktable".  INPUT is the only function affected; SCAN, TTYIN, etc.,
are the same as before (they have no special tests for '0).

SETBREAK(TBL1←GETBREAK, "ABC", "", "INS"); INPUT(CHAN, TBL1)
will read characters from CHAN, omitting '0 characters and stopping
on the first "A", "B", or "C".  An equivalent way of specifying this
action is now
SETBREAK(TBL1←GETBREAK, "ABC", 0, "INSZ"); INPUT(CHAN, TBL1)

SETBREAK(TBL1←GETBREAK, "ABC", "", "INSZ"); INPUT(CHAN, TBL1)
will read characters from CHAN, put any '0 characters it finds into the
result string, and stop on the first "A", "B", or "C".

SETBREAK(TBL1←GETBREAK, "ABC" & 0, "", "INSZ"); INPUT(CHAN, TBL1);
will stop on the first "A", "B", "C", or '0 character.

Mode "Z" is reset to the default (always omit '0) by mode "I" and mode "X".
SETBREAK(tbl, "chrs", "chrs2", "ZINS") is equivalent to
SETBREAK(tbl, "chrs", "chrs2", "INS").
*8 Oct 1976	SNAIL	MJC

Snail now knows about the processors SYS:AL.DMP, SYS:BLISS.DMP, and
SYS:MIDAS.DMP, and will recognize the switches /AL, /BLISS, and /MIDAS.
Snail's order for deciding what processor to run when none was specified
has MIDAS after AL after BLISS after PALX.  Typing one of the commands
TRY, DEBUG, PREPARE, EXECUTE, or LOAD for an AL file will result in AL
swapping to 11TTY when it's through compiling (this is also the case for
PALX).

Snail also knows about Datamedia terminals to the extent that if a user
on a Datamedia types a command TRY, DEBUG, or PREPARE which would cause
a debugger to be loaded, the default debugger would be Raid instead of DDT.
*4 Dec 1976	SAIL LONG REAL CVEL LREALIN LREALSCAN	JFR

Double precision floating-point arithmetic (LONG REAL) is now in Sail.
SAIL.PUB[DOC,AIL] contains detailed information on the new features;
this page contains summary and status information.

1-7-77
 compiler:	SYS:SAIL.DMP
		known bug: LNOT of a REFERENCE LONG REAL parameter
		    generates bad code

 runtimes which are supposed to work:
		CVEL, LREALIN, LREALSCAN, PRINT
		PROFIL
		array service, record service, underflow handling

 runtimes which do not yet work, but will soon:
		BAIL

 runtimes which might take longer:
		LONG REALs in LEAP (DATUM, etc.)

Briefly:
LONG REAL declares KI10 hardware format double precision; 62 bits (18 decimal
digits) for fraction parts, exponent range 10↑38.

LONG REAL is dominant type; coercion path is STRING ↔ INTEGER ↔ REAL ↔
LONG REAL.  Conversion from LONG REAL to REAL rounds.  From REAL to LONG
REAL, concatenate zero word.  Operations + - * / % LAND LOR EQV XOR ASH LSH
ROT ABS MAX MIN LNOT and relational operators supported.

CVEL converts from LONG REAL to STRING.  LREALIN, LREALSCAN operate similarly
to REALIN, REALSCAN.
*5 Dec 1976	BRK # W  Wholine for a given tty #	ME

The new escape command BRK # W will give you the wholine for the job using
TTY #, where # is an octal TTY number.

If the TTY specified is not in use, this command is a no-op.

This is currently the only command for which the ESC + and BRK + commands
do not work exactly as hoped; in particular ESC/BRK + will get a slightly
strange argument when incrementing/decrementing around multiples of 10,
and decrementing 1 (BRK 1 W) will result in the BRK being turned into ESC
(ESC 0 W, which is equivalent to ESC W).
*10 Jan 1977	COPY /PAUSE switch	ME

For people who want to make finished-quality hardcopy output on a terminal
using COPY, the /PAUSE switch has been added.  This switch, which is
always sticky (i.e., applies to all files in a COPY command, no matter
where the switch occurs), causes COPY to pause at certain times and wait
for the user to type a carriage return or linefeed before typeout will be
continued.  Thus it is possible to change paper or set up forms on a
printing terminal for each set of pages to be printed, without having
anything printed on the paper except the text from the file(s).

When COPY is typing a file for which a pagelist was given, as in this
example:

	TYPE FOO(2:3,8:10,12)/PAUSE

typeout will pause before each element in the pagelist (here, before pages
2, 8 and 12).  When no pagelist is given for a file, COPY will pause
before each page of the file (including the first page).  In addition,
COPY will pause just before exiting (so that the printed page(s) can be
removed from the printer without "Exit" appearing on them).

Here is another example:

	TYPE UUO.ME[S,DOC](12,17:19,22),MAIL.BH[UP,DOC]/PAUSE

This will cause the typeout to pause (waiting for a CR or LF) just before
each of pages 12, 17 and 22 of UUO.ME[S,DOC], just before each page of
MAIL.BH[UP,DOC], and after the last page of MAIL.BH[UP,DOC].

The /PAUSE switch only affects typeout on the terminal.
*20 Jan 1977	DM margins    ESC m <    ESC n >	ME
Two new escape commands are now available to DM users for suppressing
user program display output outside of a specified range of columns on
the display.  ESC m < (where m is decimal) suppresses all user display
output to the left of column m, and ESC n > (n decimal) suppresses all
user display output to the right of column m.  The only type of output
these commands affect is user program output generated by the UPGIOT
UUO (ie, display program output), and even then it does not affect
output in insert/delete mode nor does it affect output of CRs and LFs.

Note that ESC 5 < (for example) will suppress output to the left of
column 5 and therefore whatever text already appears in columns 1 to 4
will (normally) not be erased even when new text appears starting in
column 5.  However, after an ESC 40 > (for example) old text in
columns 41 to 80 will usually be erased by new text at or before
column 40 since output of actual text usually causes the rest of the
line to be erased (except when this erase-to-end-of-line feature is
inhibited).  Also, if, for example, ESC 20 < and ESC 10 > are given,
all output is suppressed except for CRs and LFs and the line erases.

Thus these commands can be used to speed up displaying by E, WHO and
other display programs by suppressing unneeded output.

ESC < resets the left DM margin to zero and ESC > resets the right
DM margin to infinity.  ESC N resets both margins, as does a RESET
or DPYCLR UUO.  BRK > sets the right margin to 0, thus suppressing
all text.
*21 Jan 1977	Who	PMF
Who now optimizes output for Datamedias, sending only changed information.
If the screen becomes garbaged the command "U" will force a complete update
of the screen.  Also upper segments of displayed jobs are displayed.
*5 Mar 1977	Line editor -- partial activation	ME
Several changes have been made to the line editor to provide more line
editing flexibility.  The main change is that activation of characters out
of the line editor no longer always transfers all line editor characters
into the input buffer.  In the normal case now, when you type an activator
(other than a plain CR) in the middle of the line, everything up to and
including the activator is transferred to the input buffer, but everything
beyond the activator is retained in the line editor to allow further
editing.  The EMODE bit in the fourth word of the special activation table
forces the entire contents of the line editor to be transferred to the
input buffer upon activation.  Programs that formerly used the character
count returned by INWAIT can use EMODE even more reliably (since the
character count returned by INWAIT is only seven bits, one bit too few).
However, INWAIT still returns the total count of characters that were in
the line editor at the time of activation, including some characters that
may still be in the line editor after INWAIT returns.

Also, activation characters now never overtype anything already in the
line editor.  For instance, altmode and linefeed will be inserted in front
of the character the cursor points at.

Plain CR typed in the middle of the line when NOT in insert mode is still
put at the end of the line, thus activating the whole line.

Examples:

1)If a user program does an INCHRW when there are several characters in
the line editor, the program will gobble only one character out of the
front of the line, allowing you to edit the remaining chars.

2)If you are typing to the monitor (or some program which takes only line
mode input), you can say CONTROL-I and CR to insert a CRLF in the middle
of the line while preserving in the line editor text beyond that point.
Furthermore, you will still be in insert mode (from the CONTROL-I) after
the CR has been typed, so you can insert one or more lines of typing in
front of what you have in the line editor.

UUOs modified:

INCHRW, INCHRS, INSKIP, SNEAKS, and SNEAKW can now all access the first
character in the line editor even if the cursor is at the left margin.
*24 Mar 1977	LOGIN options: FDM FDM128	ME

Two new login options are available for your OPTION.TXT file.  These
are useful if you login remotely sometimes on a Datamedia (DM) and
sometimes not.  The new options are FDM and FDM128 (Fast DM options).
With either of these, LOGIN will tell the system that your terminal is
a DM if and only if you are on one of the high-speed dialup lines
(TTYs 0 through 6).  The FDM128 option will also tell the system that
your DM can display all 128 Stanford characters (provided you are on a
high-speed dialup line).  Like the options DM and DM128, these options
take an optional following argument to specify the number of lines
your (simulated) DM has on its screen, with the form being FDM=30 or
FDM128=30 (for 30 lines).
*30 Mar 1977	ESC +  BRK +  ESC *  Incremental escapes	ME

The escape command ESC + repeats the most recently given ESC or BRK
command but with an incremented argument.  Similarly, BRK + repeats the
most recently given ESC or BRK command but with a decremented argument.
Furthermore, the escape command ESC * repeats the more recently given ESC
or BRK command with the same argument; this is useful to avoid having to
retype the arg when you give the same escape command several times in a
row.  Also, ESC Q (which puts up the wholine of another job with the same
programmer name) simulates your having typed ESC n W with the proper n for
repeating the escape command via ESC * or ESC +.

For example, the following pairs of escape sequences are equivalent:

ESC 0 S  ESC 1 S  ESC 2 S  ESC 1 S	BRK 26 M  BRK 27 M  BRK 26 M  BRK 27 M  
ESC 0 S  ESC +    ESC +    BRK +  	BRK 26 M  ESC +     BRK +     ESC +   

If you give ESC/BRK + after an escape command that did not have an
explicit argument given, then the effective argument resulting from the
ESC/BRK + is undefined.  That is, ESC U ESC + is NOT (necessarily) the
same as ESC U ESC 1 U.
*2 Apr 1977	XGP file displaying	HPM

XGPSYN displays xgp text mode files on the video synthesizer, at a cost
of 3, 4 or 5 data disc channels and 5 to 15 seconds of CPU time per page.
For more info, type HELP XGPSYN, or R XGPSYN and ? .
*2 June 1977	SNAIL, tmpcor	MJC
All standard processors now use tmpcor command files (PUB and DO were 
most recently converted).  QQxxxx.RPG files are no longer supported in
SNAIL.  The file SNALIO.SAI[SUB,SYS] contains Sail procedures which
implement the tmpcor interface between SNAIL and alternate processors.
*6 Nov 1977	Privacy, spying, and (MAGIC) mapping	ME

For a writeup explaining the privacy, spying, and mapping
features of the system, see MAGIC.ME[UP,DOC].
*13 Nov 1977	FINGER	LES

The system command "FING" shows data on all jobs, in order by programmer
initials.  The "IDLE" column shows the time, in minutes, since the given
job was last in the RUN queue.  If the job is currently in the STOP or
NULL queues, a "." follows.

If there is a digit in the next column, it represents the number of extra
Data Disc channels that belong to this job.

Finally, the "Terminal" part shows the location of the owner (the terminal
that last typed something at this job).  "detached", of course means just
that.  "disowned" means that the terminal that last owned this line has
released it.  "TV" means that this is a television (Data Disc) terminal
that is displaying the channel currently.  "tv" means that the terminal
that owns this job isn't looking at it.

If terminals other than the owner are viewing this job's main channel,
then they are listed on subsequent lines, with the job field blank.

			   POINTING THE FINGER

The command "FING <people list>" shows data only on the specified people.
For example, "FING JMC,DAVE,HERSK" requests information on programmer JMC
and anyone whose first or last name begins with "DAVE" or "HERSK".
String matching uses the following precedence:
  1) exact match on programmer initials,
  2) exact match on friendly or last names,
  3) match on leading characters of friendly or last names.
If a given string matches more than one person at a given level, it
reports "ambiguous" and lists their names.

For people who are not logged in, it tells when they last logged out
and shows their plan file, if any.

			FILE LISTS

Arguments in the FINGER command are separated by commas and/or spaces.
An argument of the form "@<file name>" causes that file to be read.
Files can include references to other files, ad nauseum.  In files,
everything to the right of a semicolon on a given line is ignored,
so that comments can be put there.

The default file extension is "DIS" and the default PPN is "[P,DOC]".
Thus if you say "FING @H", it will first look for a file in you area
called "H".  If that doesn't exist, it will next try "H.DIS" in your
area and, if necessary, "H.DIS[P,DOC]", the latter being the list of
hand-eye people which is kept in [P,DOC] along with other group lists
(see SAIL Telephone Directory).

			SWITCHES

The argument list may also contain switches of the form "-PLAN" or
"-LOGOUT", which suppress the output of plan files and times of
last logout, respectively.  These may be abbreviated to as little
as "-p" and "-l".  Thus, if you give the command "FING @VB @M-L"
you will get information only on people in the Volleyball and Music
Groups who are logged in.
;
*19 Nov 1977	SPOOL	MRC

19:57:28 Saturday, November 19, 1977	FQ+1D.14H.46M.0S.


1.   You may now use the /REPEAT and /HOLD switches with XSPOOL and may
queue to the XGP spooler when it is down, as has always been allowed with
the lineprinter spooler.  The reason for this is that these semi-
administrative controls do not prevent people from being losers with
leaving their listings around the XGP, but do prevent legitimate usage of
these features.  Also, according to Les it is actually cheaper to make
multiple copies on the XGP than to Xerox them!

2.   PPN parsing is now intelligent; null fields now default to the
appropriate field in the ALIAS PPN (not the login PPN, by popular
request).  Almost any construct with PPN's that are meaningful but used to
be barfed at now work.

3.  You can now unspool any job (ie, use the "privileged unspool") if you
use the /ALL switch in the UNSPOOL command.

4.  SPOOL now defaults to .LPT if no extension is specified and no file
exists with the null extension.

5.  XSPOOL now defaults to .XGP if no extension is specified and no file
exists with the null extension.
*26 Nov 1977	BATCH (MAIL) time limits	BH

The BATCH command now has a time limit feature, to ameliorate the
problem of runaway batch jobs.  The feature is controlled by the
/LIMIT or /TLIMIT switch (the two names are equivalent) in the form
	/TLIMIT=mins	or	/TLIMIT=hrs:mins
The switch is given with other batch switches, right after the
command name.  The form /TLIMIT=∞ may be used for an infinite limit.
THE DEFAULT TIME LIMIT IS ONE HOUR for jobs submitted for later
execution, and is INFINITE for jobs run immediately with the /NOW
switch.  (Presumably the latter case implies that the user is watching
the job run and can interrupt it himself if necessary.)

The limit applies to the job's runtime (CPU time), not realtime.
The BATCH controller takes clock interrupts every two (real) minutes
to check the controlled job's runtime, so the time limit may in fact
be slightly exceeded before the job is stopped.  If the job runs over
its time limit, it is logged out immediately; the log file will end
with a line saying
	? BATCH: time limit exceeded.

Batch requests already submitted before this announcement do not have
time limits.
*19 Nov 1977	LOGIN	MRC

19:11:00 Sunday, November 27, 1977	FM+2D.4H.48M.31S

1.  The XMAIL option says do not type out a "Message from ..." mail
notification if you were the last person to write your mail file.  This
includes writes by MAIL; if enough people want that changed, it will be.

2.  The XDIGEST option says always type out the AP news digest if you
have not seen it, whether or not NOMAIL is set.  It doesn't require DIGEST
to be set (ie, it turns on DIGEST).

3.  The NONOTE option says never type out notices.  This is useful for
people who log in on multiple accounts but only want to see notices on
one (but still want their OPTION.TXT executed).

4.  The SYSTAT option types out the number of logged-in jobs and the
number of jobs running at the current time (this is the old message that
guest users used to get).

5.  LOGIN xxx where xxx is a programmer name logs you in as if you typed
LOGIN 1/xxx.  This is LOGIN's end of the master PPN feature.

6.  LOGIN xxx pppppp where xxx is a programmer name and pppppp is a
password logs you in as 1/xxx, password pppppp.  This is a Tenex-style
of LOGIN.  Note that your password IS echoed with this style of login.
This is just for people who want to log in this way; you don't have to
use it if you don't want it.  It is slightly more efficient to use this
way (in the order of a few microseconds).

7.  You can now type CALL in octal input (ie, when inputting a protection
code) and do what you'd expect it to do, ie, abort the LOGIN.  It used to
barf with an error message.
*27 Nov 1977	FTP one-line transfer	BH

If you only want to do one file transfer command it is now possible to
do the whole thing in just one monitor command line, without hassle.
Just give a monitor command of the form

	FTP local ← {host}remote
	FTP local → {host}remote
	FTP {host}remote ← local
	FTP {host}remote → local

(Those are real braces--you type them!)  The direction of the arrow
indicates the direction of the transfer.  People on non-SAIL terminals
without right arrow can always use left arrow, since the remote file
pathname may be given first in this format.  (The rules for doing
things the old way are unchanged.)  Therefore, an equal sign may not
be used as the delimiter; it must be an arrow to indicate the direction
of the transfer.

Although there must be an arrow, either of the pathnames may be null,
in which case the other one will be used for both ends as in the old
system when only one pathname is given.

Normally FTP will attempt to do the transfer in image mode, 36 bit.
If you want ASCII mode transfer, give the command as above, but with
"FTP/A" instead of just "FTP".  If the remote host will not accept
the specified mode, the transfer is aborted and you can try negotiating
manually.

After doing the transfer successfully, FTP will close the connection
and exit.  So if you want to do several transfer commands, it pays
to do it the old way rather than several of these new commands.

Before doing the transfer, FTP will send the command
	USER ANONYMOUS
and, if asked for a password,
	PASS SAIL
This is the tenex convention for guest access to files via FTP.
(Another ad hoc tenex standard takes over the world...)
The USER command will be useless but harmless when connecting
to an ITS system, or to SAIL, should you do such a silly thing.
If you often use another system with a different guest access
protocol, send a note to BH with the details and we'll
see what can be done.
*30 Nov 1977	Responsible TTYs, Mapped beeps, Privacy 	ME

This writeup explains responsible terminals, mapping beeps, and
terminal privacy.

Not explained here is how to override the privacy flag that may
prevent some Data Disc escape commands from working.  For details
on that, see MAGIC.ME[UP,DOC].

For details on the DD mapping and tying commands, see the next page.


THE RESPONSIBLE TTY

The system keeps track of the physical terminal (keyboard)
responsible for each logical terminal.  The responsible terminal
is the terminal that last typed a character (while mapped) to the
logical terminal.  Escape commands that affect the physical
rather than the logical terminal (e.g., all mapping, video, and
audio commands) do not change the responsible terminal.

No one is responsible for an available terminal, unless the
terminal is a DD in the DD channel wait queue, in which case the
DD that put it there is responsible.

Beeps and effects of the ADSMAP UUO are mapped to the terminal
responsible for the given TTY line.


PRIVATE TERMINALS

You can request that people not be allowed to spy on your
terminal (whether DD or not).  Typing ESCAPE H (or TTY ESC H on a
non-display) sets the privacy flag for your terminal.  Normally
escape commands and system spying programs observe the privacy
flag.  However, by specific request, a user can override anyone's
privacy flag, so PRIVACY IS NEVER GUARANTEED!


PRIVATE DATA DISCS

You cannot (except by MAGIC, see above) map or tie to a private
DD for which you are not responsible.  However, you can always
map and tie to those DDs for which you ARE responsible.  Thus, if
you map somewhere and say ESCAPE H (make private), you can still
map away and back despite the privacy flag you set.

When you are mapped to a DD that is suddenly made private by
someone else, you will be mapped back to the lowest-numbered DD
line that you are responsible for, if any, else to a free DD.

When you are tied (and not mapped) to a DD that is suddenly made
private by someone else, you get tied back to where you are
mapped.

*30 Nov 1977	New/modified escape commands	ME

The old DD line numbers now apply only to keyboards.  When you type on an
available DD, the lowest numbered free DD line is given to you.  (Virtual
DDs!)

ESCAPE CALL now gets you an available DD line if there are any, else it puts
you in the DD wait queue and beeps you (after mapping you to an unused
DD).  (If you were already in the queue, it doesn't map you but does beep.
If it maps you to an unused DD but doesn't beep, it means the queue is
full--with about 27 entries!  Each keyboard may only have one entry in the
DD wait queue at a given time.)  You will be beeped again when you get
your DD, but your keyboard mapping will not be changed at that time.  You
can use BREAK R (see below) to map to the new DD line you got.

BREAK CALL still gets you out of the DD wait queue, but it no longer
matters where you are mapped when you give this command, since you can
only have one entry in the queue.  This command beeps iff you were really
in the queue (but you won't be there any more).

BREAK M is unchanged.  It maps you to the next DD used by the programmer
name using your current DD line.

ESCAPE M now maps you to your "home" DD line.  Your home line (only
defined for DD terminals) is set by typing ESCAPE CLEAR while mapped to
the line which you wish to be your home line.  Initially (and if you never
type ESCAPE CLEAR), your home line is the first DD line you use.  If your
home line goes available, your home becomes the lowest-numbered DD line
you are responsible for.

BREAK R maps you to the next DD you are responsible for, including any in
the DD queue.  Remember that anything you type (while mapped) to a DD
makes you responsible, even if what you type is an ESCAPE command (that
went to the DD line rather than to your terminal--mapping, video, and
audio commands don't claim responsibility, but, e.g., ESCAPE W does).

BREAK G ties you to the next DD in use by the same programmer name.  This
command leaves you mapped wherever you were.  Thus this command is to
BREAK # L as the BREAK M command is to BREAK # M.  BREAK # G is the
same as BREAK # L.  MAGIC G overrides privacy and does BREAK G.
MAGIC # L (and MAGIC # G) overrides privacy and does BREAK # L.

ESCAPE CLEAR makes your home be the DD that you are mapped to.

BREAK CLEAR disavows responsibility for the DD that you are mapped to,
makes that DD also not your home (in case it was), and then maps you
to your (possibly new) home DD.  If the DD you were mapped to was your
home, then your new home will be the lowest-numbered DD line that you
are responsible for, if any, else an available DD.  BREAK CLEAR is
what you should type when you are through using a particular DD
terminal but are still logged in there.

ESCAPE [ collects the following programmer name until a character is
typed that is not a letter or digit or that has CONTROL or META on.
The terminating character determines the action of the escape command.
The possible commands are:

    ESCAPE [prg] maps you to the DD line in use by the lowest job number
    logged in with the programmer name prg.  Only works on DDs.
    MAGIC [prg] overrides privacy and does ESCAPE [prg].

    ESCAPE [prg αL ties you to the DD line in use by the lowest job number
    logged in with the given programmer name.  Only works on DDs.
    MAGIC [prg αL overrides privacy and does ESCAPE [prg αL.

    ESCAPE [prg αW gives you the wholine of the lowest job number logged
    in with the given programmer name.  Works on all displays.


(The following has nothing to do with virtual DDs but it here since
it is a new escape command.)

ESCAPE FORM clears the currently selected piece of paper on your display
by outputting lots of linefeeds to it.
*30 Nov 1977	FTP one-liner passwords	BH

The one-line FTP command format now allows you to specify a particular
USER and PASSword to be sent to the remote host instead of the default
USER ANONYMOUS and PASS SAIL.  The format is to use
	{host/user}
instead of simply {host} in the command line.  If a password is
required, you will be asked to provide it later, with echoing turned off.
Example:
	FTP ←{SRI/NICGUEST}LIAISONS.TXT
will connect to SRI-KL, send USER NICGUEST and the password you supply
later, and copy their file <NICGUEST>LIAISONS.TXT into your local file
LIAISO.TXT all in one swell foop.
*2 Dec 1977	FTP one-liner ACCT and OPTION.TXT features	BH

For people who want to store files on TENEXes, you have to be able
to send an ACCT command.  Therefore, the one-line format will now
accept a host specification in the form
	{host/user/acct}

That's rather a lot of typing.  Therefore, it is now possible to
keep all this information in your OPTION.TXT file.  Here's how:
in the FTP monitor command, use a host specification of the form
	{name↑}
(actually the right brace is optional, but it looks nice).  FTP
will then read your LOGIN PPN's OPTION.TXT file (not alias PPN)
looking for one or more lines starting "FTP:".  These lines should
contain one or more host definitions in any of these forms:
	{name:host/user}
	{name:host/user/acct}
	{name:host/user/acct/password}
	{name/user}
	{name/user/acct}
	{name/user/acct/password}
In the latter three cases, "name" also serves to identify the host.
ACCT can be empty to avoid sending an account number, e.g., {SRI/USER//PASSW}
Note that passwords are stored online at your own risk.  If you don't
include a password and one is needed, FTP will ask you and turn off
echoing as usual.  Note that the "name" you type must match the "name"
in OPTION.TXT exactly (except for case of letters); if you habitually
use an abbreviated version of a host name, that's what you should put
in OPTION.TXT too.

Example: (fictitious accounts, John, don't bother trying it)
In your OPTION.TXT you have
	FTP:{SUM/SU-AI/STAFF/FOO},{NET:SRI/NETPROG/NIC}
The command
	FTP →{SUM↑}FOO.BAR
will copy local file FOO.BAR to <SU-AI>FOO.BAR at SUMEX without
asking any more questions.  The command
	FTP ←{NET↑}FOO.BAR
will ask you for a password and copy <NETPROG>FOO.BAR at SRI-KL into
local file FOO.BAR.

An additional INCOMPATIBLE CHANGE to FTP is that LPPN is now the default
mode instead of RPPN.  This means that the one-line command
	FTP ←{SRI}<NETINFO>LIAISON.TXT[NET,DOC]
or the old-style
	RETR <NETINFO>LIAISON.TXT[NET,DOC]
will use local file LIAISO.TXT[NET,DOC] and remote file <NETINFO>LIAISON.TXT
instead of using local file LIAISO.TXT[your alias] and trying for remote
file <NETINFO>LIAISON.TXT[NET,DOC] as it previously did.  This is probably
just what you wanted unless you are using CMU, in which case I'm not sure
whether it is or not.  In a one-line FTP command, use the /R switch (i.e.,
start the command FTP/R) to get RPPN mode.

In the past, to retrieve a file and direct it to your terminal, you
had to give a command like
	RETR TTY:FOO←REMOTE.FILE
because if you left out the FOO the transfer was considered a multiple
(wildcard) operation for lack of a local filename.  There is now a TTY
command to do this; the format is
	TTY REMOTE.FILE
or, for a one-line FTP operation,
	FTP/T {HOST}REMOTE.FILE
Note that this is the only form of one-liner which does not require (or
in fact permit) a ← or → delimiter.  Also, /T implies /A.
*6 Dec 1977	LOGIN	MRC

	OPTION.TXT enhanced, new RUN option, universal project 1 default.

LOGIN now allows slash as a delimiter in OPTION.TXT like comma.

The RUN=filespec option allows an arbitrary program to be run.  The device
defaults to SYS:; there is no filename or PPN default.  RUN is another
mutually exclusive option, and has highest priority (ie, it is selected
before LOGRUN, etc...).

The INIT and LOGRUN options are now considered "obsolete", since
RUN=DSK:INIT and RUN=LOGRUN are equivalent and more general.  However,
these options will remain so OPTION.TXT files will not be broken.

The BOW option sets black on white.

You never have to specify project 1 now.  If you wish to do other than
a "/" login, just prefix the programmer name with the delimiter of your
choice.  For example:  LOGIN MRC and L /MRC are now equivalent, and of
course L .MRC does the obvious thing.

LOGIN now tells you if you have an illegal option in your OPTION.TXT.

LOGIN allows multi-line OPTION.TXT entries; carriage return is now treated
like space, so:

LOGIN:foo,bar,
 garply;

is the same as LOGIN:foo,bar,garply;
*17 Dec 1977	WM (WHOMAP)	ME

The monitor command
	R WM
runs a program that tells which Data Disc line(s) each Data Disc terminal
is mapped to, tied to, and/or responsible for.

Also, a single DD line number argument can be given in the form
	R WM;46
to find out which DD lines the given DD terminal is mapped to, tied to,
and/or responsible for.  This is useful for finding out who is using a
particular DD terminal.

*2 Jan 1978	MAIL FORWARDING (also FTPS)	BH

The MAIL program now provides for message forwarding, primarily intended
for users whose primary mailbox is on another ARPAnet host.  The feature
also allows for "pseudo-mailboxes" which are forwarded to one or more
real destinations.  This document will first consider how forwarding
affects what happens when you give a MAIL command, and then will go into
how forwarding is established.  The various possible combinations of
options complicate things a lot, but I hope that in all cases, what
happens is "the right thing"; this rather long document is more to
introduce the various messages you may see than to get you to memorize
all the possibilities.

		Forwarding programmer mail

First we consider the forwarding of mail for a programmer name.  As an
example, programmer name GFF forwards to GEOFF%SRI-KA.

    .MAI GFF This is a test.
    Forwarding GFF to Geoff%SRI-KA
    Geoff at SRI-KA -- ok
    Exit
    ↑C

In this case, the forwarding entry has been set up to notify the user
that forwarding is taking place.  This is optional; usually it will be
done for real programmers and not for pseudo-mailboxes.  The use of a
user's human name rather than programmer name works with forwarding:

    .MAI GOODFELLOW message text
    GFF is the ID for user Geoff Goodfellow
    Forwarding GFF to Geoff%SRI-KA
    Geoff at SRI-KA -- ok
    Exit
    ↑C

Forwarding happens only for MAIL, not SEND!

    .SEN GFF Test message
    Exit
    ↑C

But if the SEND command causes mailing, the mail is forwarded:

    .SEN GFF Test message
    GFF not logged in, type Y to mail. Y
    Forwarding GFF to Geoff%SRI-KA
    Geoff at SRI-KA -- ok
    Exit
    ↑C

Another possible use for forwarding is to affect the processing of
one's mail.  For example, if user ABC always logs in remotely and
reads his/her mail with RCV rather than E, ABC might be forwarded
to ABC/-E to tell MAIL not to make an E directory when creating a
new message file for that user.  This brings up the question of
switches applied to forwardees.  Most such switches are applied to
all of the corresponding real destinations, e.g., MAIL GFF/DIST
will be treated like MAIL GEOFF%SRI-KA/DIST.  Also, for forwardees
only, /-DIST implies /NODIST, since the mailer may not know whether
the actual recipient is local (in which case /-DIST is applicable)
or at a remote host (/NODIST).  A few switches, which affect the
format of local files, are ignored for forwardees, e.g., MAIL GFF/-E
ignores the switch, because the mailer doesn't really know what file
s/he's writing.  These switches are rarely used anyway; don't worry
about it.

		"Mail-only" destinations

It is possible for a person to be known to the system only for the
purpose of mail forwarding, i.e., s/he will have a forwarding entry
and perhaps an entry in the personnel list so that his/her human
name will be known, but will have no file directories.  Such a
person is a "mail-only" destination; suppose that GIO is forwarded
to WIEDERHOLD%SUMEX and has no file directories at SAIL:

    .SEN GIO Hello.
    Mail-only destination GIO will be ignored for SEND.
    Type Y to continue, using valid destinations: 
    Exit
    ↑C

(In this case, nothing will happen even if you type Y because the
only destination is a mail-only one, and mailing was not specified.)

    .MAI GIO Hello
    Forwarding GIO to Wiederhold%SUMEX
    Wiederhold at SUMEX-AIM -- ok
    Exit
    ↑C

MAIL to this destination works straightforwardly, to coin a phrase.
There are some other possibilities:

    .SEN/MAIL GIO text
    Mail-only destination GIO will be ignored for SEND.
    Type Y to continue, using valid destinations: Y
    Forwarding GIO to Wiederhold%SUMEX
    Wiederhold at SUMEX-AIM -- ok
    Exit
    ↑C

Since the command asks for both SEND and MAIL (/MAIL), it does have
something to do despite nobody to send to.  But you are given the
chance to abort, since saying SEND/MAIL might mean that you expected
it to be able to send also.  The command SEND/Y does not act like
SEND/MAIL, but like SEND:

    .SEN/Y GIO text of message
    Mail-only destination GIO will be ignored for SEND.
    Type Y to continue, using valid destinations: Y
    Exit
    ↑C

			Pseudo-mailboxes

The pseudo-mailbox capability is useful mainly for incoming network
mail, since local users can easily use the simpler @FILE distribution
list facility.  For example, there is a large mailing list called
HEADER-PEOPLE at MIT which includes several SAIL users.  When anything
is mailed to that list, MIT must set up several separate network
connections to SAIL, one for each recipient, each of which starts up
a separate MAIL job.  This can be made more efficient by creating a
pseudo-mailbox SAIL-HEADER-PEOPLE here, containing all the SAIL people
in HEADER-PEOPLE, and replacing them with one entry for this new
mailbox.  Pseudo-mailboxes are always mail-only destinations, i.e.,
SEND SAIL-HEADER-PEOPLE won't work.

The pseudo-mailbox name must be entered completely; there is no
partial name recognition as for human users.  Case of letters is
ignored, however.

			Network mail

Incoming network mail will be accepted for any destination listed in the
forwarding file; the remote sender will be notified about the forwarding
if a local mailer would be.  The network SEND protocol does NOT accept
forwarding, even in the case of SEND/MAIL (XMAS command in FTP).  For
the network SEND protocol, it is just as if forwarding didn't exist.

			Reminders

Reminders may not be sent to pseudo-mailboxes.  If a reminder is sent
to a programmer name for which forwarding is in effect, the programmer
name is given to the REMIND phantom as is; when the reminder is actually
delivered, the message will be sent to the actual programmer name and
mailed to the specified forwarding addresses, as in the SEND/MAIL command.

		Setting up mail forwarding

For both technical and administrative reasons, users should not enter
their own forwarding requests directly.  Instead, make a forwarding
request with the command MAIL FORWARD and explain in the message
what you want done.  (The technical reasons have to do with the
rigidity and non-robustness of the forwarding file format, and the
administrative reasons have to do with avoiding one user forwarding
another's mail or creating frowned-upon mailing lists which would
use up too much time or disk space.  Since this is a new feature, I
don't think there are any administrative guidelines as yet; anyway
it's not my department.)
*2 Jan 1978	XGP spooler breaking up (suspending) listings	ME

The XGP spooler will break up listings that are more than 50 printed
input-file pages long in order to let shorter listings through.  Listings
are broken up only at formfeeds (pagemarks) in the input file.  A long
listing will be suspended if the spooler finds anyone waiting for the XGP
or a pending higher priority spooler request at the time the spooler
checks, which is currently every 50 printed input-file pages.  (An input
file page that is longer than the XGP page size will still count as only
one input file page for these purposes, since the spooler doesn't know how
much paper is used to print any given text.)  When the spooler checks to
see if it should suspend a listing and decides not to, a small piece of
blank XGP output may occur at the point where the spooler was thinking,
if the priority checking caused the spooler to get behind the XGP.

When a listing is suspended, the requestor will get a message saying

	;XGP Spooling Suspended.  FILENM.EXT[PRJ,PRG]        TIME

and the last page of XGP output will indicate the page at which the
suspension came.  When the listing is resumed, another message says

	;XGP Spooling Resumed.  FILENM.EXT[PRJ,PRG]        TIME

*3 Jan 1978	.XGP files /USETI & /FONT partial font loading	ME

Two new switches have been added to the XGP spooler for XGP files
(extension .XGP or explicit /XGP given in command).  These switches are
provided for utilization of partial font loading, which is important for
saving font compiler space when many fonts are used.  These new switches
are only recognized when found in an XGP file.

The first of these two new switches is actually an extension of the old
/FONT switch.  The new form of the switch specifies partial font loading
and the characters to be loaded; the format is

	/FONT#n=file.ext[prj,prg]=<string of characters>

(compared to
	/FONT#n=file.ext[prj,prg]
for complete font loading), where the "#n" is the usual optional font
number which can be as large as 127.  The <string of characters> is
terminated by any character (including null) that occurs twice in a row.
Every character in this string, including the ending character that is
repeated, will be loaded by the font compiler.  Note: Partial font loading
works only from source (uncompiled) font files (.FNT format), not from
compiled font files (.CFT).  If there is only a CFT-format file for a font
that you want partially loaded, then you will get a font compiler error
(illegal format in file) when spooling starts.

The second new switch allows XGP switches that normally occur at the front
of an XGP file to be placed at the end of the file.  This is particularly
useful for a one-pass document compiler that wants to utilize the partial
font loading switch explained above.  Such a compiler doesn't know which
characters need to loaded until the entire XGP file has been generated, so
it is handy to be able to put the font switches at the end.  The location
near the end where switches can be found is specified by ending the
switches at the front of the file with the switch

	/USETI=n

where n is the decimal number of the record where switch reading is to
resume.  Switches are then read starting at that record and continuing to
the end of the file or until a formfeed is encountered that is not in a
<string of characters> of a /FONT switch; anything from such a formfeed to
the end of the file is ignored by the spooler.  This switch can be used
only once per file and only in disk files.  No text between the given
record number and the end of the file is ever printed--it is assumed to
contain only XGP spooler switches (or comments following a formfeed).
Normal font and margin switches can precede the /USETI at the front of the
file, but everything following the /USETI=n up to the next formfeed will be
ignored by the spooler.  The normal method of planting this switch in an
XGP file is:
    (1) start writing the file by leaving an empty record at the front of
	the file (could be a record with anything in it, doesn't matter),
    (2) write the main text into the file,
    (3) skip to a new record and remember its number (n),
    (4) write font and/or margin switches (at the end of the file),
    (5) execute a USETO UUO to cause output to go to front of the file
	where the empty record was left (USETO 1),
    (6) output the /USETI=n switch (followed by a formfeed if the main text
	didn't start with one).
*6 Jan 1978	Spoolers: /QSPOOL switch	ME

A new switch has been added to the SPOOL and XSPOOL commands to cause the
appropriate spooler's queue (LPT or XGP) to be listed immediately after
the new request has been queued.  The new switch is /QSPOOL, which can be
abbreviated /Q; this switch can appear anywhere that switches can occur in
the command.  For example,

	XSPOOL FILE/QSPOOL

will spool FILE on the XGP and then list the XGP spooler's queue.
Similarly,

	SPOOL/Q FILE

will spool FILE on the LPT and then list the LPT spooler's queue.

*6 Jan 1978	SYSTEM UNPROTECT TALK LINK TTY GAG	BH

The system has these new features:

1.  There is an UNPROTECT command which takes a filename and changes
that file's protection to 005, whether or not you normally have access
to it.  The UNPROTECT program which executes the command logs its use
on the CTY and in the file UNPROT.LOG[1,2] which anyone may read but
nobody may write (except implicitly by using the command).  UNPROT
cleverly won't let you unprotect the log file.  This command is meant
for emergency use when you manage to protect a file against yourself.
It will be considered a serious offense to use it to access other
people's files which are protected against you.  Note that this program
only changes the protection codes of files, not of directories, so a
directory which is protected against you is safe from this command.

2.  There is a TTY GAG (and TTY NO GAG) command which will prevent
anyone from sending you a message (TTYMES UUO) or linking to you
(TALK command).  This cannot be overridden no matter how powerful
you are.  It is meant for people who are making hardcopy listings on
remote terminals.  Please remember not to leave yourself gagged after
the listing or you will be incommunicado forever.

3.  The TALK command no longer fails if the target terminal is in
user mode.  The only causes of failure are talking to yourself,
target terminal holding, or target terminal gagged.  The TLK privilege
no longer exists.  Also, when someone links to you, you are notified
by a message of the form ";;Link from FOO " where FOO is the programmer
name if the linker is logged in, or the TTY name otherwise.

4.  When a TTY is opened for output in image mode (mode 10 or 11),
parity is not generated for characters output, nulls may be output,
and 8-bit characters may be output by changing the byte pointer in the
buffer header to a byte size of 9 bits.  The exact number of
characters you deposit into the buffer will be output, not rounded
up to an exact word boundary.
*16 Jan 1978	FORTRAN LIB40 SINE/COSINE BUG FIX DSIN/DCOS	EJG

A horrid bug was fixed in the FORTRAN subroutine library routines DSIN and
DCOS.  (These are double precision sine and cosine functions.)  This bug
has been with us ever since the conversion of F40 to use the hardware
format double precision floating point instructions available on the KL10.

Unfortunately, the nature of the bug was such that under many
circumstances, DSIN and DCOS would get the right answer, but in other
cases the answer could be grossly incorrect.  All FORTRAN programs using
DSIN or DCOS, and SAIL programs using the SYS:LIB40.REL versions of DSIN
and DCOS should be reloaded in order to get the new version.
*18 Jan 1978	Licking FINGER	Les

			NETWORK FINGER
A FINGER command containing %<site name> will now attempt to finger people
at other Arpanet sites.  It does this by connecting to the FINGER socket
at the specified site and passing the rest of whatever you typed (before
and after the "%<site name>" to the host.  If that host supports Network
Finger, then you get whatever they return.

For example, "FING TK%AI" tells you about Tom Knight at MIT-AI and
"FING %SRI" tells you about everyone who is running on SRI-KL.  At this
writing, only the following sites respond to a network FINGER:
all MIT ITS sites (ai, mc, ml, dm), sri-kl, sri-ka, and office-1.
More will be joining shortly.

Normally only one site can be specified in a single FINGER command, but if
you would like to waste some time, say "FING %*" and it will tell you
about everyone out there.

			DOMESTIC FINGER
The system command "FING" shows data on all jobs, in order by programmer
initials.  The "IDLE" column shows the time, in minutes, since the given
job was last in the RUN queue.  If the job is currently in the STOP or
NULL queues, a "." follows.

If there is a digit in the next column, it represents the number of extra
Data Disc channels that belong to this job.

Finally, the "Terminal" part shows the location of the owner (the terminal
that last typed something at this job).  "detached", of course means just
that.  "disowned" means that the terminal that last owned this line has
released it.  "TV" means that this is a television (Data Disc) terminal
that is displaying the channel currently.  "tv" means that the terminal
that owns this job isn't looking at it.

If terminals other than the owner are viewing this job's main channel,
then they are listed on subsequent lines, with the job field blank.

			   POINTING THE FINGER
The command "FING <people list>" shows data only on the specified people.
For example, "FING JMC,DAVE,WILL" requests information on programmer JMC
and anyone whose first or last name begins with "DAVE" or "WILL".
String matching uses the following precedence:
  1) exact match on programmer initials,
  2) exact match on friendly or last names,
  3) match on leading characters of friendly or last names.
If a given string matches more than one person at a given level, it
reports "ambiguous" and lists their names.

If only one person is specified and he is not logged in, it normally tells
when he last logged out and shows his plan file, if any, but this can be
suppressed with switches (see below).

			FILE LISTS
Arguments in the FINGER command are separated by commas and/or spaces.
An argument of the form "@<file name>" causes that file to be read.
Files can include references to other files, ad nauseum.  In files,
everything to the right of a semicolon on a given line is ignored,
so that comments can be put there.

The default file extension is "DIS" and the default PPN is "[P,DOC]".
Thus if you say "FING @H", it will first look for a file in you area
called "H".  If that doesn't exist, it will next try "H.DIS" in your
area and, if necessary, "H.DIS[P,DOC]", the latter being the list of
hand-eye people which is kept in [P,DOC] along with other group lists
(see SAIL Telephone Directory).

			SWITCHES
Normally, if only one person is specified in the FINGER command and he is
not logged in, the time of his last logout and plan file, if any, are
given.  This printout can be suppressed by using the "-LOGOUT" or "-PLAN"

You can force printing of last logout or plan files even for lists of
people by using the "/LOGOUT" or "/PLAN" switches, which can also be
abbreviated to one letter.  Thus "FING @VB/L" lists everyone on the
volleyball list who is logged in and, for the rest,  the time of their
last logout.
*21 Jan 1978	Home Terminals	LES

Until now, the Lab has covered telephone costs of home terminals.
Beginning with the next billing period, this cost must be borne by the
individual.

This policy change is in response to pressure from the Administrative
Contracting Officer on our ARPA contract.  His initial position was that
terminals could not be taken home at all, but our ARPA sponsors talked him
out of that.  The government position is that there is substantial
personal convenience involved in having a home terminal and that it saves
some trips to the Lab, hence it represents a saving to the individual.  In
my opinion, these telephone charges are a legitimate contract cost, but it
would probably be unprofitable to appeal the decision at this time.

People with home terminals will be reimbursed the cost of their next bill
in the usual way, but must bear this expense personally thereafter.
They may wish to consider getting rid of the extra line or switching to
60 unit service, which costs only $3.94 per month currently but costs
multiple message units during weekday business hours.

Anyone with a home terminal who is not willing to bear the telephone cost
is requested to return the terminal.  There are substantially more people
requesting terminals than there are terminals.

*24 Jan 1978	AUDIO, DAYLIGHT TIME, PTYS	BH,ME,JBR

			    New system 8.70/A

		     New audio switch escape commands
ESC n B establishes a temporary selection of audio channel 0 (silence/
	paging) for n minutes, or until reset by program.
BREAK n B ditto but with paging suppressed during the n minutes.  These
	commands are meant to deal with commercials and bad songs.
BREAK U (no numeric arg) terminates the paging interruption in progress,
	if any, restoring your normal audio switch selection.  If no
	paging interruption is in progress, it flushes your temporary
	selection (including one made with ESC/BREAK n B above) and
	restores your permanent selection.  (BREAK n U is unchanged.)

			  Daylight savings time
The system now figures out automatically whether or not daylight
	savings time is in effect.  Both local time (standard or
	daylight as appropriate) and standard time are kept in the
	monitor.  The STDTIM UUO returns the standard date and time
	in the same format as the ACCTIM UUO's local date/time.
Low core location 261 points to monitor variable DAYLIT, which is
	nonzero iff daylight savings time is in effect.
The creation/writing times for files returned in the traditional
	4-word lookup/enter block are in LOCAL time.  The time
	in word 5 of the UFD entry is in STANDARD time.
This means that there will be a missing hour of local time when PDT goes
	into effect and an extra hour of local time when we go back to PST.
	Programs that are sensitive to local time being discontinuous should
	be fixed.

			Messages and beeps to PTYs
PTYs are now created with the GAG bit set.  The TELNET server turns
	the bit off.  This bit is now checked instead of IMPBIT to
	decide whether or not to allow messages and beeps to the PTY,
	so you can change the default assumption (allowing messages
	to network PTYs only) by changing the GAG bit.
*24 Jan 1978	XGP spooler suspending on dead XGP/KA	ME

The XGP spooler no longer restarts from scratch a listing that was in
progress when the XGP (or KA) died.  It attempts to resume such a listing
at the place where it stopped, so don't discard partial listings -- they
won't be reprinted!!!  If your listing resumes at a point beyond the first
page that was lost from the XGP/KA crash, please mail to ME a message
explaining what the file was and what happened (how far it missed when
resuming).  The spooler is designed never to resume so far forward that it
omits printing some pages, but it may sometimes resume far enough back to
reprint a few pages that already made it out ok.  Normally, it will resume
at exactly the right place.
*27 Jan 1978	NS output files 	ME

NS will no longer output stories for automatic notification requests to
files that are write-protected against local non-owner users.  Thus
an NS automatic notification request output file must NOT have the 010
bit on in either the file's protection key or the UFD's protection key.
*30 Jan 1978	PRIVATE MAIL	BH

It is now possible to have mail files protected against access by other
users except through the MAIL command.  There are two parts to this new
feature:

1.  If mail is addressed to user PRG, and there exists a file named
MSG.MSG[1,PRG], then the mail is sent to that file rather than to
↓   PRG↓.MSG[2,2] as normally.  In other words, you must create such
a file in order for MAIL to use it.  If you want your mail in E format,
you should create the file with an E directory page.

2.  If mail to a file named MSG.MSG fails because of a file protection
violation, the message is queued.  The reminder phantom job, which
delivers queued mail, has the necessary privileges to override the file
protection, and will do so ONLY for mail addressed to a MSG.MSG file.
*2 Feb 1978	XGP spooler: unspooling 	ME

Unspooling a file in progress on the XGP now stops printing fairly
quickly.  You can spot an unspooled listing by the randomly short length
of the last page printed.
*2 Feb 1978	LPT and XGP spoolers: accounting	ME

The LPT and XGP spoolers now keep accounting records indicating how many
(11-inch) pages are printed for each spooler request.  These records are
kept in files that can be read (but not written) by anyone.  If you think
someone may have walked off with your listing, you can find out who has
recently had a listing made on either the LPT or XGP by looking in the
accounting files (e.g., with E in readonly mode).  The records are kept in
separate files by device and by day of the month.  The LPT records are
kept in LPT.*[SPL,SYS] and the XGP records in XGP.*[SPL,SYS].  The
extension used is the current day of the month.  Thus XGP.2[SPL,SYS] has
the XGP data for the second of the month.  The format of these files
should be obvious except for the last entry on each line, which is the
number of (11-inch) pages used in the given listing.

Reading the spooler accounting files does not impede the updating of
those files because the spoolers recopy the files each time a new entry
is added.  If you are using E to read such a file and you want to see if
there is a later version of the same file, you can say ⊗λ<altmode> to
force E to switch away from the file and then back.

*2 Feb 1978	XGP spooler suspended listings	ME

This is a summary of the changes made to the XGP spooler during the last
month or two with regard to suspended listing.  Included here are some
brand new features not previously documented.


		   AUTOMATICALLY SUSPENDED XGP LISTINGS

The XGP spooler sometimes breaks a long listing into two or more parts in
order to let shorter listings through without their having to wait until
the long listing is completely finished.  Thus it is no longer necessary
(or desirable) for users to manually break up their XGP spooler requests
into moderate size pieces.

A listing being made with BMAR=0 (no paper cuts) will never be suspended.
For all other listings, the spooler uses the following rules to decide
whether or not to suspend the current listing.

First, the spooler only considers suspending a listing when a formfeed
(pagemark) is encountered in the input file.  It would be very difficult
to maintain enough data to be able to resume a listing that was stopped in
the middle of a page in the input file (even assuming that the listing was
only broken at an XGP paper cut).

To avoid suspending a listing that was about to finish anyway, the spooler
will not consider breaking a listing that is within two records of the end
of the file.

When a formfeed is encountered with more than two records left in the
file, the spooler checks to see if the "guaranteed unbreakable" minimum
amount of paper has been output for the current listing.  This minimum is
currently 25 normal-size (11-inch) pages.  Note that the spooler actually
checks the amount of paper spewed out, not the number of pages.  If less
than the minimum paper has been output, then no break is considered and
the listing continues.

If the minimum amount of paper has been output (or if someone has manually
requested to UNSPOOL that the current listing be suspended -- see below on
how to do that), then the XGP spooler checks to see if anyone is in the
device-wait queue (DWQ) waiting for the XGP.  If so, the current listing
is suspended and the spooler releases the XGP.

If no job is waiting for the XGP, the spooler checks to see if 50
formfeeds have been output since the last time it checked the priorities
of spooler requests.  (The spooler of course checks priorities before
starting a listing.)  If not, the listing continues.  If so, then the
spooler re-checks the priorities of all the XGP spooler requests.  In
making this check, the priority of the request in progress is figured
based on the amount of the input file that is left, not on the total size
of that file.  If the current listing still has the top priority (see
below for priority calculation), then it is continued, although a page or
two of blank paper may have come out of the XGP while the spooler was
thinking.  If the current listing no longer has the highest priority, then
it is suspended and the new top priority task is started.

When a listing is suspended, the requestor will get a message saying

;XGP Spooling Suspended.  FILENM.EXT[PRJ,PRG]        TIME

and the last page of XGP output will be a short piece of paper indicating
that the listing was suspended and giving the page number at which the
suspension came.  When the listing is resumed, another message says

;XGP Spooling Resumed.  FILENM.EXT[PRJ,PRG]        TIME


	 SUSPENDED LISTINGS RESULTING FROM THE XGP OR KA-10 DYING

The XGP spooler no longer restarts from scratch a listing that was in
progress when the XGP (or KA-10) died.  It attempts to resume such a
listing at the place where it stopped, so don't discard partial listings
-- they won't be reprinted!!!  If your listing resumes at a point beyond
the first page that was lost from the XGP/KA crash, please mail to ME a
message explaining what the file was and what happened (how far it missed
when resuming).  The spooler is designed never to resume so far forward
that it omits printing some pages, but it may sometimes resume far enough
back to reprint a few pages that already made it out ok.  Normally, it
will resume at exactly the right place.

Note: If the XGP spooler gets killed while the XGP or KA is still
down, then the spooler won't have yet suspended the current listing.
So DON'T KILL THE SPOOLER in these cases or else the listing in
progress will be restarted from the beginning.  While the XGP or KA is
down, the spooler sends out a message to that effect every 8 minutes
to the CTY and to the user whose file was being listed.


    MANUALLY FORCING THE XGP SPOOLER TO CONSIDER SUSPENDING A LISTING

If you give the monitor command UNSPOOL/X/ALL, then you can select from
several special options with respect to the XGP spooler (or LPT spooler if
you said /L instead of /X).  Amoung these options (for the XGP) is typing

    S to cause present file to be suspended if higher priority task ready.

If you use this option, then the XGP spooler will consider suspending the
current listing upon encountering the next formfeed, without regard to the
"guaranteed unbreakable minimum" amount of paper output or to the number
of pages output since it last considered breaking.  This option (along
with the other special options) should not be necessary normally but is
included for exigencies.


		       SPOOLER PRIORITY CALCULATION

The priority of a spooler request is inversely proportional to the length
of the file to be listed and directly proportional to the number of
minutes (plus one) that the listing request has been in the queue.  The
file length used in this calculation for suspended XGP listings is the
amount of the file that was left when the listing was suspended, not the
total file size.  As of yet, no special consideration is made in the
priority calculations when listing only certain pages of a file.


		  QSPOOL REPORTING OF SUSPENDED LISTINGS

Whenever the XGP spooler's queue is listed, any spooled file whose listing
has been suspended (and possibly resumed) will be appropriately marked in
the "(pages)" field, with only the remaining pages listed.  For example,

 Requestor   queue time       file             	    priority    (pages)
 [  1, ME]    01:11 Jan 6     UUO   .XGP[  1, ME]   2	  	(Suspnd: 52:*)
*2 Apr 1978	mail returns dead letters to sender	BH

There are an increasing number of situations in which messages are sent
by a MAIL job which is detached, rather than one which you run explicitly,
e.g., queued mail, or the SEND and MAIL extended commands in E.  If such
a detached MAIL job fails to deliver a message, because of an error in the
mail command or because of refused network mail, it now mails the text of
the message back to you so you can redirect it properly.

Note: the above applies ONLY to detached MAIL jobs.  If you run mail
explicitly from your terminal, and the message is not delivered, you
can and should still use the REENTER mechanism to redirect the message,
so MAIL jobs attached to a terminal do not mail the message back to you
if undeliverable.

It is quite likely that I've missed some of the ways in which a message
can become undeliverable.  Please report bugs to BH.

*3 Apr 1978	filehacks and programmer names	ME

COPY and E now accept a programmer name after the \MAIL, \NS, and \PLAN
filehacks, in the form \MAIL:PRG (or abbreviated \M:PRG).

Also, any unlogged-in DI\MAIL implies /WRITER (to find out without logging
in who last wrote your mail file).

*9 Apr 1978	New system 8.70/I	BH,ME,MRC

The new system has several new features, of which the most noticable
to users have to do with facilities for non-display terminals.

The name of the monitor is now officially WAITS.

------------------------------
The following down to the next row of hyphens is about features for
non-display terminals.

There is a command TTY [NO] GLASS which can be used to indicate to
the system that your terminal will delete a character if the system
sends it the sequence backspace-space-backspace ('10-'40-'10).  Also,
TTYSET 36 gets the bit and TTYSET 37 sets it.  The system is clever
enough to erase characters like ↑X which take up two positions, but
not clever enough for tabs.

The character ↑← (octal 37, ASCII control-underscore, or control-leftarrow
or control-slash on some keyboards) is used as a prefix for special
commands, like ESC on a display.  The ↑← character is not echoed.  The
following commands are now defined:

↑←↑B	send an alpha (↑B) to input buffer
↑←↑C	send a beta (↑C) to input buffer
↑←↑O	send a partial-sign (↑O) to input buffer
↑←↑U	send a there-exists (↑U) to input buffer
↑←↑W	delete the last word on the input line
↑←↑Z	send a not-equal to input buffer
↑←↑←	send an or-sign (↑←) to input buffer
↑←-	negate arg for following command
↑←0:↑←9	decimal arg for following command
↑←C	add control (200) bit to the next character
↑←D	add double-bucky (600) bits to the next character
↑←F	full character set
↑←H	hide terminal
↑←I	interrupt program
↑←M	add meta (400) bit to the next character
↑←R	redraw the current input line
↑←W	force a TTY WHO command

Lower case letters are the same as upper case.  Undefined commands are
echoed as a bell and otherwise ignored.

The first set of special commands are used to "quote" characters which
normally have special meanings on a non-display terminal, namely,
↑B (hold/unhold), ↑C (call), ↑O (suppress output), ↑U (clear input),
↑Z (end of file), and ↑← itself.

The ↑← ↑W command is like a succession of rubouts; it deletes characters
until the first (rightmost) letter or digit, then deletes until the
first character which is not a letter or digit, not including that
character.  The deletions will be echoed with the backslash notation
or by erasing the characters deleted depending on the TTY GLASS bit.

The digits and minus sign are used to create an argument to a following
command, as for ESC on a display.  For example, ↑← F turns on full
character set mode, and ↑← - F turns it off.

The commands ↑←C, ↑←D, and ↑←M can be used to type a character with
Stanford control and meta bits into your program.  C stands for Control,
M for Meta, and D for Double-bucky (control and meta).  You can also
say ↑←C↑←M instead of ↑←D.  These commands echo as [C] [M] or [D].
The bits are applied to the next ordinary character you type.

The commands ↑←F, ↑←H, and ↑←I correspond to the TTY ESC commands for
those letters: F sets the full character set bit, H sets the hidden
bit, and I interrupts your program.  Type a minus sign after the ↑←
and before the letter to invert the sense of the command, e.g.,
↑← - H unhides your terminal.

The ↑←R command echoes a crlf and then retypes the text in the
current input line; it is useful if the line is full of deletions
and you have trouble reading it.

The ↑←W command does a TTY WHO; i.e., it types out your job's who
line on the terminal.
------------------------------------

On a display, BREAK FORM is a no-op.  This is for the benefit of
people who mean to type BREAK CLEAR and miss.

The DMLIN and IMPBIT bits in the TTY line characteristics word
can no longer be set by SETLIN, PTSETL, or TTYSET 1.  (There are
special TTYSETs for these functions, which existed in earlier systems.)

In a talk ring, the system's idea of the number of characters on the
current line is correctly maintained, so any program output which may
appear will have CRLFs inserted if necessary to fit the tty width.
Also, echoing of the characters typed observes the width, TTY ARROW,
padding, etc.

Changes to IMP service: the LOGGER phantom which answers incoming requests
for connections has been replaced by code inside the monitor which starts
up the server jobs itself.  Also, programs which initiate connections to
elsewhere will get warning messages if they use local socket numbers other
than the ones provided by the official IMP MTAPEs.
*15 Apr 1978	new system 8.70/J	BH,ME

Important incompatible changes:

Writing the character 032 octal to a PTY, unless it is an IMP PTY
of which you are the owner (i.e., unless you are a telnet server),
is interpreted as a tilde, not as an end of file.  To send an EOF
to a PTY, write the character 612 octal.  (This is the only case
in which bucky bits can be sent to a non-display by PTYUUO.)

The TALK command will run the TALK program, clobbering your core
image, if the command line contains the character @ or %.  This is
for talking to a user on another network host.  The TALK command
without those characters continues to work without clobbering your
core image.

On a display, an ESC command with no numeric argument is not remembered
for purposes of ESC * or ESC +.  The last command which did have an
argument is still remembered.

------------

Less important or less incompatible:

IMPSER considers socket numbers up to 1000 as public (was up to 400).

On a non-display, "↑← n W" is like TTY WHO n; "↑← - n W" is like
TTY WHO -n; "↑← 0 W" is like TTY WHO 0.  These type the who line
for job n, for the job using TTYn, and the system wholine, respectively.

"↑← n ↑W" deletes n words.

"↑← N" (stands for No-op) does nothing, except that if bucky bits have
been set by ↑←C etc it will echo as [N] and forget the bucky bits.
It is also good for cancelling a ↑← command you've started typing.

↑← commands are allowed while in a TALK ring.  Also, displays can
type β (which is the same as ↑C on a non-display) without breaking
the ring.

The PJOB TTYn command tells the owner of a PTY as well as the job
logged in on that PTY.
*16 Apr 1978	New system WAITS 8.70/L	BH,ME,MRC

New escape command ESC n V on displays, ↑← n V on non-displays,
does a FILES command for job n (your own job if no argument)
without having to stop your program.

When writing characters by PTYUUO to either a real TTY which is not
a display or a PTY which your job does not own, all characters are
quoted, i.e., ↑B, ↑C, etc are interpreted as graphic characters
rather than as special functions.  Also, 9-bit characters may be
written.  (When writing to a PTY which you do own, only 7-bit
characters are allowed, and they are interpreted as if typed at a
physical TTY, as before.)

The bits SUPACT, SUPSCM, SUPALL, and SUPSOM in the last word of the
special activation table are interpreted correctly for non-displays.

New PTJOBX DETACH function (index 10 (=8)) detaches the job on the
TTY if any.  Skips if successful.

IMP MTAPE 22, why is host down?
ARGBLK:	22
	host-number
	value-returned-here
The returned value is 0 for host up or unknown, otherwise code
indicating why the host is down if they told their imp.
Read UUO.UPD for the interpretation of the why-down value.
*23 Apr 1978	QSPOOL/DISPLAY/TYPE	ME

The QSPOOL command now defaults to displaying the spooler queues whenever
this command is given on a display terminal.  The display is updated
approximately every 15 seconds.  As a result of this displaying of the
queues, a couple of new QSPOOL switches have been added along with a
couple of commands applicable particularly while the queues are being
displayed.

While the queue display is being updated every 15 seconds, the updating
will continue for about 3 minutes after any command before automatically
stopping.  Typing BREAK I will make the updating continue for about 30
minutes, and typing ESCAPE I will make it stop in 3 minutes.

The new QSPOOL switches are:
   /DISPLAY	   Display the queue(s) (this is the default).
   /TYPE	   Type out the queue(s) instead of displaying.

For example, the monitor command Q/T will type out both queues and Q/T/X
will type out only the XGP queue.

The commands you can give while the queue(s) are being displayed are:
   <altmode>       Update the display immediately without waiting 15 secs.
   <cr> or <lf>    Terminate the displaying (exit if came from monitor cmd).
   αβE             Same as <cr>.
   <switches><cr>  Select particular mode(s) and continue.  One or more
		   switches can be included.  When any switches are given
		   while displaying the queue(s), the default is to resume
		   outputting both queues (hence the significance of the
		   /DISPLAY switch below).  Also, the normal 15 second
		   delay is suppressed when any switches are given; the
		   display will be updated immediately (unless /TYPE was
		   given).  Here are the available switches:

/DISPLAY   Display the queues; given alone, this switch displays both queues.
/TYPE      Type the queues; given alone, this switch types both queues.
/XGP       Output only the XGP queue.
/LPT       Output only the LPT queue.
/ALL	   Output the [SPL,SYS] command file name for each queue entry.

Any switch may be abbreviated to just one letter after the slash, but
giving an illegal switch will terminate the display.

Note that it takes only half as long to evaluate a single queue being
displayed as it does to evaluate both queues.  This means that the display
will appear sooner if you are asking for only one queue (e.g., /XGP).
*27 Apr 1978	NUL: device	MRC

     The NUL: device now exists.  It is a black hole; on input it
provides an immediate EOF and simply slurps up and discards all
output.

     NUL: simulates most devices reasonably, however it has the
device characteristics of no device (except that it can do input,
output, and has a long dispatch table).  Also, you shouldn't
expect the more esoteric UUOs for these devices to necessarily
"do the right thing" (like IMP MTAPEs!).  ENTER, LOOKUP, RENAME,
will always skip return without any argument checking, and USETO,
USETI, UGETF, CLOSE, UTPCLR, and MTAPE are no-ops.
*14 May 1978	Page numbers within .XGP files	ME

The numbering of pages within a .XGP (or /XGP) file has been changed to
omit the page of switches from the count of pages.  This means that the
first actual page of text in a .XGP file is now considered to be page 1
(it was formerly considered page 2).

This change does NOT apply to E-format files.  In an E-format .XGP file,
the first page of normal text is still page 3 (page 1 is the directory and
page 2 contains the switches).

During the transition from the old page numbering scheme to the new, there
will be a brief period during which certain programs other than the spooler
will not have been converted and which will still therefore interpret page
numbers in the old manner (thus being inconsistent with the XGP spooler).
The conversion status of such programs is listed below and will be updated
as these programs get fixed.

     Program	Conversion done?

     [XSPL]	done
     XGPSYN	done
     XGPTYP	(not applicable)
     XPART	done
     POX.XGP    done
     POX.POX    done  (source for POX.XGP[UP,DOC])
     HELP POX   done

*28 May 1978	↑←L, ↑←X, ↑←Z, RPGSAV option	BH

On a non-display, ↑←L followed by a character now deletes back to that
character, like control-L on a display.  ↑← <n> L <char> will do it n
times, like control-n control-L.  Also, ↑←X and ↑←Z are like ESC X and
ESC Z on displays.

The LOGOUT:RPGSAV option in OPTION.TXT has been modified.  Formerly, it
copied each TMPCOR file your job had into a file named QQSVCM.RPG for
compile-type SNAIL commands, or QQSVED.RPG for edit-type commands, in each
directory with your login programmer name for which such a TMPCOR file
existed.  Since SNAIL doesn't know about QQSVCM.RPG and so on, this hasn't
worked right since SNAIL was invented.  Instead, LOGOUT now copies all the
TMPCOR files, plus the associated PPNs, into single files QSVCM.TMP and
QSVED.TMP in your login directory; there is a new LOGIN:RPGSAV option
which reads these files and writes all the corresponding TMPCOR files.
Thus you must have both LOGIN:RPGSAV and LOGOUT:RPGSAV to get the desired
effect, which is to remember your SNAIL commands across login sessions.
Note: Logging in with a dot (L PRJ.PRG) instead of comma or slash will
prevent processing login options; if you then log out after having done
some SNAIL commands, LOGOUT will forget about the previously remembered
commands and will only preserve the ones from this session.  Conversely,
logging out with KJOB/F will prevent the preservation of the commands
from this session, and will instead leave the remembered commands unchanged
from the previous session.  The QSVxx.TMP files are human-readable if you
want to check on what commands you're remembering.
*8 Jun 1978	Idle time in wholine	ME

In a wholine, if the indicated job hasn't run in the last 5 minutes, then
the idle time in minutes will be displayed INSTEAD of the ticks and
percent fields of the incremental runtime and the diskops field.  Typing
ESCAPE W (or any other ESCAPE command that displays a wholine) will
cause the normal XTIME and DSKOPS fields to be displayed once; however,
the TTY WHO command (including forced TTY WHO commands) and the WHO UUO
will always show the idle time if it is 5 minutes or more.
*11 Jun 1978	IOWQ wholine status	ME

The wholine now gives more detailed information sometimes about the state
of a job that is in IOWQ.  If the job is in IOWQ waiting for input or
output for a device, then, instead of showing IOWQ, the wholine will show
the first three characters of the device name, followed by "I" if waiting
for input or "O" if waiting for output.

However, if the job is waiting for input from a terminal (TTY), then
instead of TTYI, the wholine will show LINE if the job is waiting for a
whole line to be typed, CHAR if the job is merely waiting for a single
character, or SNK if the job is waiting to sneak a peek at the next
character typed.

*8 Aug 1978	WAITS 8.72/J ATTACH WHOline ALIAS	BH

Several things new in this monitor:

1.  The ATTACH command is now allowed from remote not-logged-in TTYs.
This means that KATTACH can work.  However, from such TTYs the command
does not simply attach the target job, but runs LOGIN in a new job,
to ask for a password.  If you get the password right you are attached
to your job.  Also, ATTACH runs LOGIN even locally if you are
trying to attach a job which is more privileged than you are.

2. The number on the system who line just to the left of the date is
the number of free tracks on the DSK, as given by the RESO command.

3.  The ALIAS command no longer complains if you type [brackets]
around the PPN.

4.  The PUMPKIN command doesn't do anything yet.  (Just to forestall
questions.)

*11 Aug 1978	Display Use Policy	LES

The following policy change takes effect on Monday, August 14, 1978.

Saturation of certain kinds of display terminals on the SAIL computer system
is inhibiting work on various projects.  In view of this problem, we choose
to discriminate in favor of those projects that have been contributing to
the support of the laboratory, namely
    Administration & Support
    Computer Facility
    Dialnet
    Formal Reasoning
    Hand-Eye
    Knowledge Based Programming
    Music
    Mathematical Theory of Computation
    Natural Language
    Program Verification
    S-1
    Speech Modelling
    System Programming
    TEX
Henceforth, users who are not affiliated with one of these projects are
requested not to use terminal facilities that are saturated. This includes
Data Disc terminals when there are 31 in use and Datamedia terminals
when there are 6 in use.

For the present, enforcement of these procedures will be informal.  When
the saturation condition comes to the attention of people not involved in
the above projects, they should relinquish their channels as quickly as
possible.

In the longer run, we hope to augment the terminal capacity of the SAIL
system so as to circumvent this problem.  In the meantime, we regret the
inconvenience to some users.

*14 Aug 1978	New BBOARD file 	BH
The file BBOARD.TXT[2,2] will be used experimentally as a bulletin board
file for the user community.  This is the appropriate place for discussions
of controversies and so on.  The command MAIL BBOARD will send a message to
this file.  The BBOARD option in LOGIN (in OPTION.TXT) will type out
recent BBOARD entries when you log in, analogously to the GRIPE option.
The file can also be read using the \BBOARD filehack in COPY and E.

Here is a summary of the various system documentation files and their
intended function:

Filename	Write via	Purpose

NOTICE.TXT[2,2]	MAIL *		Short messages (2 lines maximum) which are
				considered mandatory reading for all users.
				This may include pointers to other files.

NOTICE[UP,DOC]	READ NOTICE	Longer messages regarding changes which have
				been made to the system.  Entries in this
				file concerning a particular program are
				required reading for users of that program.
				When an entry is made here, a short message
				specifying the program being changed should
				also be given via MAIL *.

GRIPES.TXT[2,2]	GRIPE		Reports of system bugs or deficiencies, for
				the benefit of the maintainer of the relevant
				system component (hardware or software).  This
				is not the place for discussions of any
				nature whatsoever, nor is it a permanent
				record of any sort.

BBOARD.TXT[2,2]	MAIL BBOARD	Discussion, debate, proposals to the user
				community.  Not the place for announcements
				of system changes which users must read.
				It should be possible to use the system
				without ever reading this file, but people
				who don't read it are deemed not interested
				in participating in decisions about the
				issues discussed.

In particular, BBOARD is the place for discussion of this scheme itself.
I am implementing this as an experiment, and in response to user
requests, and to discourage people from cluttering up the gripes.  It
may or may not prove to be a good idea; we'll see how it works out.

*15 Aug 1978	DIRED (all new)		DON,RSP
A new version of DIRED is now available for testing.  Though modelled
closely after the old DIRED, this new program differs SIGNIFICANTLY
from it and users of the old program should read the documentation
carefully before using the new one.  Among the new features are:
	* Efficient updating of DM screens
	* Ability to rename and spool files
	* Ability to display files without swapping to E
	* More powerful file-masks
	* Use of OPTION.TXT
The list goes on, but the documentation does a better job.  The
documentation is best read by saying
	TEST/?
(the new program is currently available via the TEST command; the DRD
command still runs the old program).

Warning!  Though this program has been substantially debugged, it is
possible that there may be a few lurking problems in it.  Be watchful,
and report all bugs promptly!  Bugs may be reported to DON and RSP, or
via GRIPE DIRED.  Comments and suggestions are also welcomed, since
we're by no means finished adding features.  (Note the "not yet
implemented" page of the documentation.)

A few specific notes:
	* We expect the new program to supersede the old one
	  sometime soon, but not until non-display service and
	  udp support are added.
	* One known bug: If you rename a file and then try to
	  switch to E in that file (via ⊗ε or ⊗λ), DIRED tries to
	  switch to the old name instead of the new name.
	* You may wish to be particularly aware of the /PARANOID
	  switch, which prevents ANY actions (spooling, renaming,
	  deleting) being done.  You might even want to put this
	  switch in your OPTION.TXT for a while.

*22 Sept 1978	DIRED		DON,RSP
The new version of DIRED has now replaced SGK's old program.  We emphasize
again that this new program differs SIGNIFICANTLY from the old one and
that users of the old program should read the documentation CAREFULLY
before using the new DIRED.  The documentation is available by via DRD/? .

The old program is still available as SYS:DIRED.OLD, documented in
ODIRED.SGK[UP,DOC].

Since the original announcement of the new DIRED (in August), non-display
support and UDP support have been added to the program.  Miscellaneous
minor bugs have also been fixed, including in particular the one mentioned
in the August announcement.  Please report bugs via GRIPE DIRED.

*26 Sept 1978	DART PUMPKIN OFFLINE RESTORE	BH

The PUMPKIN command is now up.  It is used to ask the Great Pumpkin
(who comes by night) to restore files for you from DART tapes.  That
is, it's just like RESTORE except that instead of actually reading a
tape right then it makes a request for the tape to be mounted later.
We'll try to have the files restored within a day or two after the
request is made, although this is all experimental and I'm not making
any firm promises until we see how it works out.

If you give a command like
	PUMPKIN DART.*[DMP,SYS],*.REG[*,DOC]
DART will type out a list of the files which will actually be restored,
along with their creation dates and the tape numbers from which they
will be restored.  Remember that the default PPN for output is your
alias, not the source PPN; if you want to restore files into some other
directory you must give an explicit output term:
	PUMPKIN [DMP,SYS]←DART.*[DMP,SYS]

Normally what will be restored is the most recently dumped version of
each file.  If you would like an older version, you can specify either
a specific DART tape:
	PUMPKIN/P548 ADS.DOC[1,BH]
(or /T27 if it's on a T-tape) or a last allowed creation date:
	PUMPKIN/4-OCT-76 E.ALS[UP,DOC]
(the form /10/4/76 is also allowed; a version which was written on or
before the given date will be restored).  Note that the date is the
creation date of the file, not the date on which it was dumped.  This
is the same as the date shown by the LOCATE command.

If an output file already exists at the time the PUMPKIN requests are
processed, it will not be overwritten; that request will be ignored.

Please note that RESTORE still exists and that you are encouraged to
use it to restore your own files if you're concerned about getting
them quickly.  Also please note that someone has to do some work to
process your request, so don't play with the command just to see if
it works!

*19 Oct 1978	MacLisp Newio	RPG

Finally the MacLisp NEWIO package has arrived. Documentation is
scattered (as usual) in LSPARC.RPG[UP,DOC], the various manuals
around (LISP.RPG[S,DOC], the Blue Moonual), and a special introduction
found by doing READ NEWIO.
 
The procedure for introducing NEWIO will be to have an interpreter
known as NLISP and a compiler called NEWCOM, both on sys: and runnable
via the R command. In general, utility programs and fas files for NEWIO
will be on NEW,LSP while for OLDIO they will be on MAC,LSP. After
about 1 month (depending on how well the switchover goes), the system
LISP will become the NEWIO version. This change will occur at the
end of November 1978.

To facilitate this change, I will be available for consultation during the
trial period (until the end of November) for changeover advice.

*9 Nov 1978	UNPUMPKIN PLIST DART	BH

It is now possible to examine and delete PUMPKIN requests.  The
monitor command PLIST will list all pending requests, telling you
the requestor's programmer name, the tape from which the file will
be read, and the input and output file names.

To delete requests, use the UNPUMPKIN monitor command.  The command
takes no arguments; it first types all requests made by your programmer
name, with (arbitrary) sequence numbers, then allows you to specify
by number which requests to delete.  You should specify them one at
a time.  When done, just type a carriage return to exit.

Note: if you give a wildcard PUMPKIN command (PUMPKIN *.FAI) each
file actually found in the DART data base is a separate request
for deletion purposes.  There is, at present, no way to ask to
delete all of them at once; I understand that that's a deficiency.
*16 Nov 1978	Autologout LIV	BH

A job will not be considered for autologout unless the system has three
or fewer vacant job slots, or it is on a Data Disc terminal and there
are three or fewer vacant DD channels.  Also, during the five minutes
between the warning and the logout (or detach if the problem is a
lack of DD channels), a check is made each minute, and the resource
scarcity must continue throughout the five minutes, or else the job
will no longer be deemed warned of an autologout.  In other words,
the scarcity must last five consecutive minutes for you to be logged
out or detached.

It is my eventual goal to do away with the LIV privilege.  For a fuller
discussion see BBOARD which contains an expanded version of this entry.
*20 Nov 1978	Finger	LES

See FINGER.LES[UP,DOC].
*29 Nov 1978	COPY/UIGNORE ignoring read-protected UFDs	ME

The switch /UIGNORE tells COPY to ignore UFDs that are read-protected
from the user; that is, for such UFDs no message is typed out and no
confirmation is required to continue.  This applies to all commands,
such as DIR *.ZXC[*,*]/UIGNORE and COPY FOO←*.ZXC[*,*]/UIGNORE.
*1 Dec 1978	autologout LIV DET	BH

The following changes have been made to the autologout system:

1.  The LIV privilege has been changed to mean "never log this job out"
    and has no other effects (e.g., the job may still be detached).  This
    privilege may be enabled by command or by UUO, but it goes away whenever
    a new program is run by monitor command.  It is meant to be used, for
    example, when you are debugging--but not running--a dead core image.

2.  The new DET privilege may be enabled by command or UUO and is not
    reset unless you explicitly disable it.  It means "I would rather
    be detached than logged out".  If you do NOT enable this privilege,
    your job will be logged out, not detached, even if the problem is
    one of DD channels rather than job slots.  The motivation for this
    change is that recently many jobs have been left lying around detached
    accidentally; if you enable this privilege you presumably know that
    you may be producing detached jobs.  Note that DET does not prevent
    the job from being logged out if there is a job slot shortage.

3.  Split speed dialup lines (TTY0 to TTY5) are now also counted as a
    scarce resource.  If you are on a dialup DM line you may be detached
    or logged out the same as DD users.

4.  The scarcity conditions are:
	3 or fewer free DD channels
	2 or fewer free DM dialup lines
	5 or fewer free job slots

5.  There is a new DETACH option for the LOGIN line in OPTION.TXT which
    will enable the DET privilege.  Users who have been in the habit of
    enabling LIV should use this option instead.

*6 Dec 1978	autologout	BH

Two changes to autologout.  I hope not to do anything more to it
after this point.  Here they are:

1. Non-prime-time grace period reduced to 20 minutes.  Remember that
   if there is no scarcity there will be no autologout.

2. Jobs which are eligible for autologout (or detach) are divided into
   two categories.  You are in category B if you have a DSK (or new UDP)
   file open for output, or if you have a device other than DSK or TTY
   open for anything.  Otherwise you are in category A.  Whenever the
   spy needs to log out (or detach) anyone, it first does its thing to
   all jobs in category A.  It updates its count of free jobs, channels,
   and DM lines assuming that the jobs logged out will really release
   their resources.  (In other words, it does not wait the 15 seconds that
   it takes for a DD channel to be freed up, etc.)  On that assumption,
   if there is still a scarcity, category B jobs will be logged out or
   detached if they have the scarce resources.

Please note that I don't expect either of these changes to make a big
difference.  If there is a resource scarcity then usually there aren't
very many candidates for autologout to begin with, so I expect that
category B jobs will still get the axe in almost all cases.

*13 Dec 1978	GRIPE command (MAIL)	BH

The GRIPE command syntax has been changed in an INCOMPATIBLE way to
make vectoring work better.  The syntax is now almost exactly like
that of the SEND and MAIL commands, except that instead of the usual
sort of destinations you use gripe topics.  For example, a command like
	GRIPE MAIL DIDN'T GET THE MESSAGE
used to send the text "MAIL DIDN'T GET THE MESSAGE" to the general
gripes file; it now sends the text "DIDN'T GET THE MESSAGE" to the
MAIL gripes.  The advantage is that you can now specify more than
one gripe topic in a command:
	GRIPE MAIL,E HOW COME THE αXMAIL COMMAND IN E .....
will send the text "HOW COME ..." to the gripes for both MAIL and E.
If you aren't sure what program your gripe is about, and want to send
it to the general gripes file, you should say
	GRIPE * <text...>

Another advantage of the new syntax is that it is now possible to
get the text of a gripe from a file:
	GRIPE MAIL @PPSAV.TMP

The command
	GRIPE ?
still lists the topics for which vectoring is available.  The command
	GRIPE
with no arguments enters a hand-holding dialog comparable to that for
a MAIL command with no arguments.  Also, as always, if you give a gripe
topic for which there is no vector available, the gripe goes to the
general gripes file.

*29 Dec 1978	WAITS 9.01, P2 system, new Ampex memory, XGP, reloading	BH,ME

The new 2-megaword Ampex memory has occasioned some changes in the
operating system, because the KA-10, the processor which runs the
XGP among other things, cannot address that much memory.  Therefore,
instead of sharing memory with the KL-10 as before, the KA now has
its own "small" (128K) memory.  For the most part, the system changes
should be invisible to users (although, of course, system response
should improve because of the added memory), with a few exceptions:

1.  User programs can no longer run on P2 (the second processor,
i.e., the KA-10).  In particular, P2 no longer runs spacewar jobs.
An attempt to start a P2 spacewar module will fail as if P2 were
down.  A spacewar module on P1 always has its AC 5 initially set to
-1 as if P2 were down.

2.  When the XGP is running, the font compiler job will be listed on
WHO displays as being locked in a large (over 200 page) amount of
core.  Please don't panic; this job lives in P2 memory, which is not
available for normal user jobs even when there is no font compiler.
The former limitation of 64K for the font compiler has been greatly
increased, so you can use more fonts at the same time.  The limit is
currently about 110K but it may vary.

3.  When reloading the system, the message which used to say
  "Start other processor at 204, else type any character"
now says
  "Start other processor at 204, else type D if it's down or U if it's up."
This message appears if P2 is not already running when you reload.  If
you see it, you should normally try to restart P2 as before.  If it doesn't
work, there are two possible explanations: (1) P2 or its memory is down, or
(2) the hardware is working, but P2's memory doesn't contain the P2 system.
(Usually, if the P2 memory is down, the P1 (KL-10) system will recognize that
fact and figure out for itself that P2 is down.)  You should generally type
U, meaning that P2 is Up but needs to be reloaded, unless there is a sign
posted saying it's down.  The system will then try to reload the P2 system
automatically as soon as P1 is started up.  If you type nothing for about
20 seconds, the system assumes U.

4.  If P2 stops working while the system is running, it will usually be
possible to restart it at 204 as always.  However, if the P2 system
disappears from P2 memory (or is overwritten somehow), it is possible
to reload it by typing the P2LOAD monitor command on the (P1) console
terminal.  Of course, this should only be done if P2 has stopped working;
also, before restarting or reloading P2 you should probably look for a
wizard to try to figure out what went wrong.

5.  If P2 is down, any attempt to assign the PTR, PTP, PLT, or XGP devices
will give the message "already in use by job 0".  An OPEN or INIT UUO for
those devices will fail.

*24 Jan 1979	DDT, UEDDT and special activation mode ($M-5)	ME

User DDT and UEDDT now use special activation mode in order to let the
user edit his command before he is finished with it.  This means that the
only characters that activate (and therefore cannot be edited) are those
characters that act as commands without the use of altmode.  (Also, some
illegal command characters activate immediately, and the DDT command
characters that activate will do so even when appearing inside a string
where they are not taken as commands.)  DDT also activates the first
character after an altmode (since that character is almost always a
command character), and if that character is a digit, every subsequent
character up through the first non-digit.  Finally, a backspace typed in
an empty line will activate.  If there is some situation in which DDT
fails to activate the end of a command, you can force DDT to activate by
typing any activator, such as altmode (and then you can abort the extra
character with backspace); if you find you have to do this a lot, you can
disable DDT's use of special activation mode by setting the cell $M-5
non-zero, in which case DDT will activate on every character.  Please
report to ME any situations in which DDT fails to activate upon a complete
command.

For further details about DDT, see DDT.REG[UP,DOC].

*12 Feb 1979	XGP and LPT spoolers' priorities, QSPOOL	ME

The spoolers' algorithm for calculating priorities and for choosing which
file to print next has been fixed up so that it should now be possible to
predict which listing will be next.  Also, the QSPOOL command now gives
additional information about each request in the queue and the requests
are now displayed in order by priority.

Basically, the previous slightly random special treatment for multiple
listings requested by one programmer name has been eliminated completely.
The spooler no longer cares who made each request -- the request with the
highest priority is the one that the spooler will print next.  This means
that it is possible for a given person's long listing to be suspended in
order to print a shorter (higher priority) listing for the same person.

Besides elimination of the multiple-request-per-person priority
randomness, the priority calculation has been changed in one other way.
The last (or current) person getting a listing out of the spooler has a
time penalty included in the priority calculations for all of his
remaining requests.  This time penalty is equal to the length of time
spent making that person's most recent consecutive listings, up to a
maximum of 30 minutes.  This time penalty is subtracted from the time the
given user's requests have been waiting, to make it look like they have
not been waiting so long, since in fact they were waiting for other
listings being made by the same user.  This means that during the printing
of a given file, there will be no change in any of the priorities of
requests by the person whose file is being printed.  This adjustment
allows a second user to get a small listing printed at a time when the
first user has a lot of small listings (each with high priority) in the
queue, and in general this prevents one person from hogging the spooler.

QSPOOL now displays the requests in order by priority.  Furthermore, it
includes with each request both the size of the file (in 200-word records)
and the repeat count for multiple copies (if any).  Note also that the
count of records remaining for the current file and the count of records
(size) of each file in the queue are both printed in decimal now.  Since
the queue is printed in order by priority even when being typed out, it
may now take slightly longer for the typeout to begin, since all the
command files must be read so that they can be sorted before any printing
of the queue can begin.  Finally, the total time spent serving consecutive
listings for one user is printed along with that user's programmer name
after the name of his file that is currently in progress.  This time is
precisely the time penalty mentioned above (except that the penalty is
limited to 30 minutes of listing time).

*15 Feb 1979	TTY NO DELETE, 177s vs. ↑H (010) for Backspace	ME

The command TTY NO DELETE, given from a non-display, will make the system
interchange the two input characters 177 and 010 (WAITS and ASCII
backspaces, respectively).  TTY DELETE is the default.  The purpose of NO
DELETE is to allow the user to enter backspaces by using an ASCII
backspace key instead of a DELETE key (since on some terminals the DELETE
or RUBOUT key is not conveniently located).

In NO DELETE mode, to enter a DELETE (177) (e.g., to backspace over a
character in the input line), type a ↑H (i.e., ASCII backspace--010), and
to input the character ↑H (lambda on WAITS--010) type a real DELETE
character (i.e., RUBOUT--177).

NO-DELETE mode does not affect non-ARPA PTYs or displays.

The LOGIN options DELETE and NODELETE are also available to set the mode
automatically upon logging in.  DELETE is the default.

*20 Feb 1979	extended display service, DMs	ME

I am planning to extend the current Datamedia (DM) display service to
provide for handling virtually any display terminal that has some minimal
display capabilities (see list of capabilities below).  Such a display
would be considered by programs like E, DIRED, NS, WHO, etc., to be a DM,
and the system would do the translation from the DM "protocol" to whatever
"protocol" the particular display terminal really required in order to
update the screen.  Thus, no changes to user programs would be needed to
make them all immediately work on any newly supported display terminal.
Furthermore, it would be very easy under this extension to add a new kind
of display terminal at any time, just by reporting the terminal's protocol
to the system by a UUO.

This note describes the planned extension to the display service.  If you
have comments on the suggestions below, or if you have in mind a terminal
that you would like supported, MAIL your comments and/or terminal
descriptions to ME.  Include also descriptions of any terminal capabilities
that you think should be allowed for in the display service but which do not
exist on Datamedias.  For a description of DM capabilities, see Section 13.4
of the UUO Manual (online as UUO.ME[S,DOC]/361P/32L/31W).  Accumulated ideas
on the extended display service will be kept in DPYSER.TXT[1,ME]/B; please
do not alter that file -- mail your comments to ME.


This extension will also probably include a few new features for all
"DMs", including suppression of transmission of characters that would not
change the screen appearance.  However, I do not intend to include any
algorithms in the system for figuring out if text desired on one line is
actually on another; user programs will still have to do any insert/delete
operations which are desired for avoiding extra output.  My current
estimate is that the extended display service should be usable within a
couple of months after work on it begins (I hope to begin very soon).

For the extended display service to be able to handle a particular
terminal, the terminal must be able to run in Full Duplex mode and should
have the following capabilities, all of which must be executable from the
computer (i.e., remotely, not just locally):

 (1) Line insert and delete.
 (2) Character insert and delete.
 (3) Erase to end of line.
 (4) Arbitrary cursor positioning (at least relative, preferably absolute).
 (5) Some mechanism for displaying any of 128 (actually 124 or so)
     distinct graphics in a single column; bold, blinking (ugh) or reverse
     video (etc.) might be used to manage this if the terminal can only
     display, say, 96 graphics (plus bold, etc.).

It would also be very useful for the terminal's keyboard to be able to
selectively generate the parity bit, as is done with the EDIT keys on DMs;
however, provision will probably be made to use another escape character
for turning on the EDIT bit in the following character.


Conceivably, the extended display service might also allow use of a
terminal that does not have Character Insert/Delete, but (a) this would
mean retransmission of most of the line for every character inserted or
deleted (which is fairly annoying if you're doing much of that) and (b)
I'm not guaranteeing that the extension will go this far.  If the display
service could thus simulate character insert/delete, it could also
simulate Erase to End of Line.

Without Line Insert/Delete, retransmission of most of the screen would be
needed upon line inserts or deletes, and this is so horrible that I have
no intention of contemplating it.  The simple terminal capability of
scrolling up is not enough for the display service.

If the terminal cannot display 128 (or so) different one-column graphics,
then possibly one graphic could be reserved for "unknown character"
(meaning "some character without a unique graphic").  For identifying all
the "unknown characters" on the screen, a second representation of such
characters would involve using several (e.g., 32) different normal
graphics.  The user could give some command to the display service to have
it change all the "unknown characters" into their respective alternative
forms for identification; another command would change them all back.
This facility would have the disadvantage that the user would not always
be sure what characters he was viewing on the screen, but it might be
better than no display service at all for terminals that do not have 128
graphics.  Again, I am not currently committed to providing this facility,
and I would at any rate recommend terminals with sufficient capabilities
(including bold, etc.) to avoid this problem.

Without arbitrary cursor positioning, incremental positioning must be
used.  This could be made to work, but would slow things down somewhat,
especially when display outputs interrupt each other, such as when you
type something in the line editor while the wholine or user output is
being drawn.  Terminals that can output only on the bottom line are too
awful even to think about, as far as the display service goes, so forget
them.  (There is yet another suggestion for providing just a line editor
for such dumb display terminals, but there is no current plan to implement
that suggestion.)

*31 Mar 1979	FIND	DON
The FIND program (and hence the FIND command) has been SUBSTANTIALLY
changed.  The primary differences are threefold.  First, the new program
is significantly faster (about 2 to 3 times faster when searching the
phone directory, about 11 times faster when searching the unabridged
dictionary).  Second, it handles keys which can be much more complex
than those handled by the old program.  Third, the default file is
now ALWAYS the phone directory; to specify a different default via
OPTION.TXT, you should now use the OFIND command.

For the most part, the casual user needn't worry about the changes.
For instance, FIND MCCARTHY will still look for McCarthy in the phone
directory, and FIND WITHIN LINE FOO IN BAR will look for lines containing
FOO in the file BAR.  Certain characters are treated specially in the
key, but none that commonly occur in search keys.

The full syntax of the command has changed slightly; you MUST now include
the word IN to specify a file, the EXACTLY keyword has been flushed (the
≡ character in the key marks characters for which an exact match is
required), and quotes are no longer required for multiword keys in any
circumstances.  People desiring more detail are urged to read the new
documentation (READ FIND); this announcement is intended primarily to
alert users to the more significant incompatibilities with the old
version.

There are also two new system commands:
	DFIND (which can currently be abbreviated as DF) is the same as
		FIND but assumes defaults of WITHIN LINE (instead of GRAF)
		and IN UNABRD.DIC[LIB,DOC] (the unabridged word list).
	OFIND (abbreviatable as OF) is the same as FIND except it looks
		in your login area OPTION.TXT for a line specifying the
		default file (and other defaults).  The old FIND would do
		this automatically; with the new version you must explicitly
		request the feature by using OFIND instead of FIND.

*1 Apr 1979	MAIL BATCH /DO	BH

The BATCH command in /DO mode now recognizes a new special character,
exclamation point (!), which inverts a flag saying whether or not to
wait for the PTY job to be ready for input before typing in commands.

Normally, BATCH will not send characters from your batch command file
to the PTY job unless that job is waiting for TTY input or for a
monitor command.  That way, the typing of commands is synchronized
with the running of the program.  However, this synchronization
does not work for a few programs, most notably FTP, which do not
read TTY input in the normal way and therefore are never in TTY
input wait.  Here is a sample command file using the new feature:

	FTP AI↔!
	GET FOO.BAR←MUMBLE;FOO BAR↔
	BYE↔
	!SEND . FTP DONE↔

The GET and BYE commands are sent to the PTY job as soon as the !
is seen in the command file, but the SEND monitor command is not
sent to the PTY until FTP exits and the PTY job is waiting for a
monitor command.

Note 1:  The first ! must be on the first line, right after the ↔,
because the carriage return would (even though not actually sent
to the PTY) cause a delay after the FTP command otherwise.

Note 2:  If you put enough characters between !s to fill up the
PTY input buffer, no more characters will be sent until there is
room.  If the PTY job never reads any of the characters, then
both jobs will wait forever.

Note 3:  If you actually want to send a ! to the PTY, you must use ≡!
in the command file.  (Note that all of this applies only to /DO mode.)
*17 May 1979	Spooler deliveries to Jacks Hall	ME

The spoolers now offer a free delivery service to Margaret Jacks Hall.
The actual deliveries will be made by the regular courier at regular times
and possibly also by individuals going from the Lab to Jacks Hall at
random times.

A listing to be delivered to Jacks Hall will be printed with a special
notation at the top of the title page.  (The /NOTITLE switch will be
ignored for listings to be delivered to Jacks Hall, since a title page
must be printed in order to cause delivery to Jacks Hall.)  The title page
will say to place the listing in the Jacks Hall bin in the A.I. Lab
machine room.  Users present at the Lab are encouraged to put listings so
marked into the bin, after collecting the appropriate pages together for
XGP listings.  The courier will pick up all listings in the bin before
each trip to Jacks Hall.

To request that a listing be delivered to Jacks Hall, use the /JACKS
switch on the file in question.  To suppress delivery to Jacks Hall, use
the /NOJACKS switch.  As usual, when one of these switches precedes a
filename, it is "sticky" and applies to all following filenames in the
command line; and when one of these switches follows a filename, it
applies only to that file and overrides any sticky switch in effect.

Any remote user (see exceptions noted below) giving the SPOOL or XSPOOL
monitor command without either of the /JACKS and /NOJACKS switches will be
asked whether or not the listing(s) requested should be delivered to Jacks
Hall.  The yes answer (Y) will cause ALL listings in the given command to
be marked for delivery to Jacks Hall.  The remote users who are not asked
about delivery are those coming into the computer over leased lines (e.g.,
the Livermore lines and the JMC and RWW Imlacs).  Also, if the command is
given on a non-ARPAnet PTY (e.g., under PTYJOB or BATCH, etc.), then no
question is asked, in order to avoid affecting computer generated
commands.  No spooling is ever deliberately delivered to Jacks Hall
without the requestor having explicitly said to.

The QSPOOL program indicates that a listing is to be delivered to Jacks
Hall by displaying a "J" in the "Jacks" column after the filename.

Example commands:
	SPOOL F1,F2/JACKS	;deliver only F2 to Jacks Hall
	XSPOOL/J F3,F4,F5/NOJ	;deliver F3 and F4 to Jacks Hall
	XS/J F6,F7,F8		;deliver F6, F7 and F8 all to Jacks Hall
	XS/NOJ F9,F10,F11	;don't deliver any listings to Jacks Hall

All four of the above commands will suppress questioning the remote user
about delivery to Jacks Hall, since each command contains at least one of
the switches /JACKS and /NOJACKS.
*18 May 1979	SNAIL changes	MJC

SNAIL no longer allows ambiguous option abbreviations.  For instance,
/SA used to be accepted for /SAIL, though it also abbreviates /SAVE.
An abbreviation which matches two or more options will now be rejected
with the error message "Ambiguous option."

SNAIL now accepts the NULREL option, which sends compiler output to
the NUL device.

The NOSAISEG option has been flushed, and replaced by the SAISEG option.
SAIL programs will now, by default, be executed in a single segment.
You may negate the SAISEG option; thus
	EX/SAISEG FOO
	  ...
	EX/-SAISEG
will load FOO completely into a lower segment before execution.  Note
that /SAIS is the shortest acceptable abbreviation of this option.
Note also that bugs have been noted with LOADER in connection with 
using library routines and not using an upper segment (viz. the gripes
file); I think you can win by using LINK, i.e. by saying /LINK.

Incidentally, you may negate any SNAIL option.  I'm not sure everyone
knew about this (or cared).
*28 May 1979	WHO	MRC
The @ command in WHO is "smart" about whether to use a file name or to
invoke WHO.  If it fails to find a file matching the string after the
@, it will run NETWHO.  The % command means always run NETWHO, and the
& command means always scan a file.  For example:
	.W %AI		runs NETWHO on site AI
	.W &AI		runs WHO on AI.DIS[P,DOC]
	.W @AI		runs WHO on AI.DIS[P,DOC] if it exists, else
				runs NETWHO on site AI

In addition, the A command runs IMPSTAT and the L command runs DLNSTAT,
which are "WHOs" for the Arpanet and Dialnet.

Run commands are legal only in the monitor command line.  When WHO is
running, @ means a file always, and %, A, and L are illegal commands
which cause WHO to exit.

*7 Jun 1979	DIR/REF days-referenced percentage (COPY)	ME

The command DIRECTORY/REFERENCED (or DIRECTORY/FULL) now includes the
percent of days referenced; this percent is typed immediately after the
reference date, as a two digit number.

The percent of days referenced is based on the count of days referenced
that is now maintained by the system for all disk files.  Since the
days-referenced count has been maintained only since 21 May 1979, the
percentage considers only the days since then.  For files that have been
written on the day when the command is given, no reference percentage is
printed.  A percentage of 100 is printed as 99 to conserve one column.

*10 Jul 1979	DART REAP UNREAP	BH

The new command REAP takes a list of files, like DUMP, and
causes those files to be later dumped and deleted.  More specifically,
files marked by REAP will be dumped in the next permanent-class
system dump (P-dump) regardless of when written or whether or
not marked dump-never.  If a file so marked has then been dumped
on a permanent tape at least twice, it will be deleted.  Note
that the file will be P-dumped at least once AFTER you give the
REAP command even if it had already been P-dumped twice or more.

No notification is given when the files are deleted; once you have
REAPed a file you should consider it gone.  However, there is an
UNREAP command which will remove the REAP indication for one or
more specified files, if they have not yet been deleted.

Any modification to a file clears the DART information word, and
therefore UNREAPs the file.  That is, it will not be deleted
automatically unless you re-REAP it after the modification.

Note for wizards: the REAP flag is bit 5 (10000,,0) in the DDMPTM
word of the file retrieval (sixth word of long lookup block).

P.S. -- REAPing a file does not remove it from the calculation of
the disk space you are using, until the file is actually deleted.
Therefore, a REAP command at the last minute before a purge will
not keep you from being purged.  If you REAP your files as soon
as you no longer need them, though, they should be gone when the
purge comes around.

P.P.S. -- DIRECTORY and friends indicate that a file has been
marked for reaping by showing an "R" in the same place where
a ">" would indicate that the file had been P-dumped at least
twice.

*12 Aug 1979	TELNET server		MRC

This message is only relevant to those who use WAITS from a Tenex or
Tops-20 site.

According to the Arpanet TELNET protocols, a carriage return must be
followed by either a line feed or a null, unless the connection is in
"network binary mode."  TELSER on WAITS enters network binary mode if
the user is using the WAITS Datamedia display service or runs a user
program which puts the terminal in binary mode.

Unfortunately, the Tenex TELNET program disobeyed this protocol
convention and sent a null after a carriage return if the connection
was in binary mode.  For Datamedia users, the effect was that carriage
return would give you an ESCAPE for free - not too cool.

To compensate for this, the WAITS TELNET server was modified to ignore
a null following a carriage return if the user was coming in from a
Tenex or Tops-20 site.  However, SCORE now runs a new TELNET program
written by me which obeys network protocol; and this feature causes
problems.  After thinking the matter over, I decided that it was best
for WAITS TELSER and SCORE TELNET to obey network protocol than to
compensate for another system's bug which they can easily fix.

As of today, 8/12/79, the TELNET server feature has been flushed.  Users
coming in from sites which run the old crufty Tenex TELNET program
should either have their systems programmers fix their TELNET to conform
to network protocol or should convert to SCORE's TELNET.

*9 Dec 1979	WHO holding command	ME

There are two changes to the WHO program.

(1) The H command Holds the display, after updating it once more,
so that you can read it without having it change constantly.  To
resume normal updating, use the αH (CONTROL-H) command.  While you
are holding, any command that affects what is displayed will also
update the display once with the new text, but holding will remain
in effect.  The N command (normalize) as well as αH will unhold
text displaying.

(2) Undefined commands no longer cause WHO to exit.  They are ignored.
To force WHO to exit normally, you must now type either SPACE, CR, or LF.

*7 Apr 1980	XGP /PLIMIT switch improves priority	ME
The XGP spooler switch /PLIMIT=N can be used to improve the priority of a
spooler request that will use little XGP paper for the size of the file.
In particular, if you only want to print a few pages out of a big file,
without this switch your priority would be based on the size of the entire
file, but with this switch it will be based on your promised Page Limit.

The switch /PLIMIT=N, where N is a decimal number, promises that the given
spooler request will print no more than N pages on the XGP.  If it turns
out that the request tries to print more pages than that, then it will be
stopped when passing the page limit, with an error message printed at the
end.

Note that this limit applies to pieces of paper output, so if you are
printing logical pages that take more than one page to print, then you
should increase any PLIMIT value you use to account for that fact.

If the spooler can figure out your XGP page size (which might be
non-standard) then it will let you have N pages of that size, but if you
specify PMAR=0 (like TEX output files do), then the spooler will only let
you have 11*N inches of paper output, so you should use a bigger N if your
pages are bigger than 11 inches.

The switch /PLIMIT=0 is the default and means no page limit, in which case
the file's actual size is used to compute the request's priority.

The QSPOOL command displays any Page Limits under the heading of "Limit",
which appears just before "(Pages)".  Nothing is displayed if there is no
limit.  If the page limit is not small enough to increase the priority,
then the file size will be used for the priority calculation and QSPOOL
will display a question-mark (?) after the page limit.

(Warning: The old trick of spooling a small file and then renaming a big
file to the name of the small one won't work any more.  It will give you a
spooling error of Invalid Command File.  The file printed must be no
bigger than the file spooled.)

*27 Apr 1980	BBOARD, GRIPES, JOBS, CRITIC, CKSUM	DON
The BBOARD file, originally created as an experiment (see page 244), is now a
well-ensconced fixture of the system.  Various other special-purpose files have
also been created, including CSD.BBD[INF,CSD] (filehack \CSD) for departmental
announcements, CRITIC.TXT[2,2] for departmental gripes, and JOBS.BBD[INF,CSD]
for job offerings.  New as of this notice, mail-forwarding entries have been
established for these latter files: MAIL JOBS and MAIL CRITIC.  (MAIL CSD has
for some time now forwarded to the \CSD file.)  Page 2 of \BBOARD lists all of
the more general information/gripe files and their intended uses.  In many
cases, page 2 of such a file includes a more detailed description of the purpose
of the file and the recommended ways of perusing and adding to it.  In general,
CKSUM is probably the best way to keep abreast of changes/additions; CKSUM tells
you which pages are new or different and makes it easy to look at just those
pages using E.  READ CKSUM for more details on that program.
*5 May 1980	SEND LOCAL, SEND ARPA, SEND *	DON
The command SEND LOCAL (or SEND LOCAL*) can now be used to send a message to
all "local" users, i.e., those logged in on DataDisc and III displays.  The
command SEND ARPA (or ARPA*) sends to all users connected via the Arpanet
(this isn't new, but not many people are aware of it).  If you do a SEND *,
you'll get a brief reminder concerning SEND LOCAL and SEND ARPA, in case you
want to reconsider who would be interested in seeing your message.  If you
think the matter through ahead of time and know that you want to send to
absolutely everyone, you can spare yourself the reminder by using SEND **.
*9 May 1980	"Negative Service Level" NSL	ME
A user who wishes to run a compute bound program unobtrusively can now
enable the "Negative Service Level" privilege (NSL) for the given job.
This means that the job will never be run when any non-NSL jobs are
trying to run, and therefore an NSL job will not bog down the rest of
the system (it will, however, increase the actual load average by 1,
since presumably it will be in the RUNQ all the time).  NSL can be
enabled and disabled by anyone with the monitor commands

	ENABLE NSL (or EN NSL)
	DISABLE NSL (or DIS NSL)

and the NSL privilege (4,,0 bit in the passive privilege word) can
be enabled or disabled by the SETPRV UUO from any program.

This "privilege" is not copied to a new job started by FORK.  However,
it currently is copied to a new job started by the SWAP UUO.

Also, the WHO program now displays "NSL" under the "SL" column for any
job that has the NSL privilege enabled.

*2 Jun 1980	BUNDLE	DON
A new program has been created that will bundle together one or more
files so that they can be moved as a unit.  The unbundling operation
is performed simply by running the composite file.  The unbundler can
also print an arbitrary message (e.g., for describing how to use the
files) and/or execute an arbitrary SNAIL command (e.g., to compile the
files or to run PACK (via a PROCESS command) to uncompress them).  For
details, READ BUNDLE.
*24 Jun 1980 	Times Roman Fonts 	JP

There are  now Times  Roman fonts  for the  XGP in  italics,
boldface and normal font  types and 10 or  12 pt sizes.  The
font names are

	TIM12S.FNT	Times Roman 12pt, full SAIL character set, normal type.
	TIM12I.FNT	Times Roman 12pt, italics
	TIM12B.FNT	Times Roman 12pt, boldface
	TIM10S.FNT	Times Roman 10pt, full SAIL character set, normal type.
	TIM10R.FNT	Times Roman 10pt, normal type.
	TIM10I.FNT	Times Roman 10pt, italics.
	TIM10B.FNT	Times Roman 10pt, boldface.

There is also a Helvetica boldface font useful for titles

	HLV20B.FNT	Helvetica 20pt, boldface

I have also created .TFX files  for all these fonts so  they
can be used with TEX.

Comments, Bugs, etc. => Jorge Phillips (JP)
*05 Aug 1980	DIAL	ROB

DIAL understands special names for a number of TTYs, including
LOTS, DIABLO, TI990, CANON, LSI, and TIP.  These names are fairly
volatile and are subject to change.

Also, certain TTY lines, (that for the CANON and DIABLO) are TTY EXISTed
when they are dialed, and TTY NO EXISTed upon exit.  This is to prevent
problems when SAIL and some other computer want to have an "echo contest",
and start echoing characters back and forth at each other.

*14 Aug 1980	MAIL	BH

Various small changes to MAIL:

1.  The global switch /NOMSG (may appear anywhere before the message text)
is used for a message with no text other than the subject.  There must be
a subject, and /SUBJECT is implied.  Any message text appearing on the
command line is taken as the subject rather than as the text.  If no text
appears on the command line, MAIL prompts for a subject but not for a text.
The intent is to allow a message which fits on one line of a local mail
file, so that the text appears in the recipient's E directory.

2.  If the command line specifies that the text comes from a file, and the
command line ends with <linefeed> instead of <return>, MAIL allows the user
to append to the text from the terminal.  That is, a command like
	MAIL FOO @FILE<lf>
reads the text from the file, echos the file to the terminal as it reads,
then says "Continue message followed by ..." (with the right EOF character
for your terminal), then allows further typein.  BS at the beginning of a
line, as usual, deletes the crlf and allows editing the previous line,
even if the previous line came from the file.  This can be used, for
example, to mail someone a copy of another message and append your own
comments.

3.  While typing the text of a multi-line message (not message text on
the command line itself) you can type control-meta-I to insert a file.
MAIL asks for the filename, reads the file and echos it, then asks you
to continue typing.

4.  Typing ESCAPE I during the RETRY command exits quickly (within a
second if the reminder queue files aren't open yet, at the end of the
currently processing message otherwise) and safely, without leaving
a message half-delivered.  As always, don't type CALL to RETRY.

5.  The command SEND/MAIL (global /MAIL switch only, not SEND FOO/MAIL)
writes OUTGO.MSG if it exists.  SEND/YES still doesn't.

6.  The confirmation of the date and time of a reminder is now in the
order "Date & Time" rather than the reverse, to correspond to the order
in which they must be typed in the command.

7.  Messages like "no operator on duty" are no longer relayed to the
user from Arpanet mail.  Specifically, messages with 0xx codes are
ignored during the initial connection and herald stage, although they
are still relayed to the user if received during the actual mail transfer.

8.  The remind phantom limits the number of detached MAIL jobs it will
start at once, to reduce system loading.  Also, incoming net mail from
hosts which use the XRCP protocol now use only one MAIL job for several
local recipients of the same message.

9.  The validation of local recipients should be faster, since it
now uses a file of just programmer names rather than reading the
entire MFD.  (The file is automatically kept up-to-date as user
directories are created and deleted.)

A couple of other invisible changes and bug fixes have also been made.
*11 Nov 1980	BINCOM shows XORs	ROB

BINCOM now shows the XOR of the differences of the two input files,
for example:

Word		FOO1		FOO2		XOR
000000000727	247515771100	647515771100	400000000000
000000001022	724014562322	325014562322	401000000000
000000001023	323134420322	723134420320	400000000002

*20 Dec 1980	MAIL REPLY switch	DON
The MAIL command (and SEND and GRIPE and REMIND) now accepts a switch telling
it to include a "Reply-To" field in the message header.  Mail programs at
many other sites, as well as the REPLY macro in EINIT.CMD[1,3], recognise
this field as overriding the sender's name when determining where to send a
reply.  The form of the switch is /REPLYTO"arbitrary text".  The switch name
can as usual be abbreviated to any unambiguous prefix (currently, /R happens
to be enough!).  If the arbitrary text includes quotes, use the alternate
form /REPLYTO↓arbitrary text with quotes↓; if the text is just a different
SAIL user address, you can use /REPLYTO=name.

*2 Jan 1981	Head crash details	ME
The SU-AI system suffered a head crash that wiped out 1/6 of the file system.
For details of the recovery and what files you lost, see CRASH.TXT[MUD,SYS].
All files recoverable from tape (in some version) have been restored.
*25 Feb 1981	RAID	ME
A new version of RAID is up with several new features.  Of course, to get
this new version into old programs, you must re-load such programs (with
PREPARE, DEBUG, etc., or with the %V or %H switch.).

New features:

(1) The word at $M-2 now specifies the piece of paper (PP) number that
RAID should select (with the PPSEL UUO) whenever RAID is running.  A value
of -1 (the default) in this cell means that RAID should not change the
selected PP.  New versions of SYS:RAID.DMP and SYS:FRAID.DMP use this
feature to select PP 1, in order not to disturb the normal page printer.
Note that RAID ensures that the right PP is selected everytime it updates
the screen.

(2) RAID no longer redraws the whole screen every time a breakpoint is
hit.  This is particularly advantageous for DM users, since this
suppresses much redundant output.

(2a) The word at $M-3 is now a flag, which if non-zero suppresses RAID's
doing anything to the page printer (on displays).  This can be useful if
you are debugging a program that does its own page printer manipulation.
The default for this cell is zero (normal RAID page printer setup).

(2b) For cases where you want to force RAID to redraw its display, three
new commands have been added:

  αV just redraws the display;
  βV first erases the whole screen and then redraws both the display and
     the page printer.
 αβV like βV but zeroes $M-3 first.  Thus this command make RAID resume
     setting up its page printer normally.

Notice that if a number precedes any of these, the command does something
entirely different (selects n-bit byte display mode).

(3) Eight- and nine-bit ASCII text modes have been added.  They are
enabled with the commands 8xT and 9xT, where x is either α, β or αβ, as in
any other mode setting command.  In these modes, the 8- or 9-bit bytes of
the word are interpreted as ASCII characters with one or two high-order
"bucky" bits.  A non-zero value in the bucky bits is indicated by
displaying "↑" characters in front of the ASCII character; the number of
"↑"'s displayed is equal to the value in the bucky bits; thus the octal
number 720 would be typed as "↑↑↑P".  In 8-bit mode, the final four bits
of the word are treated as the high-order four bits of a fifth text byte
whose low-order four bits are zero.

(4) When RAID transfers control to the program or when it is doing
something that may take a while (like a word search, or multi-stepping),
RAID now erases the big "OK" from the top of the screen so that you can
tell that the program (or RAID) is currently running.  (The "OK" is NOT
erased during αS and αX commands, since to do so would slow down debugging
use of RAID in commands that are normally very fast.)

(5) The αβE command in both RAID and FRAID erases the screen before
exiting.

(6) In FRAID, the file open is now displayed on the filestatus part of the
wholine.  This provides a convenient way of double checking whether or not
you are in modify-file mode.

(7) Moving a RAID job from one terminal to another works better now,
with respect to RAID's reinitializing the display on the new terminal.
*13 Sep 1981	TALKing to SAIL from an Alto	WIN
You can now use the Sail display service from the "Talk" program
on an Alto.  It is Talk.Boot on the netexec, and Talk.Run on most
local disks. Make sure you have the latest version from
[Lassen]<Alto>Talk.Run.  Just say "Talk Sail", and tell SAIL you
are a teleray 1061 (TTY TELERAY).  The top and bottom blank
keys on the right side of the Alto keyboard can be used to move
up and down windows, and the middle blank key is like a DM "Edit"
key (you hold it down and it turns the 0200 bit on).

You can talk to any host on SUNet, with windows of any size.
For example, "Talk sail 52" gives you one large window, for
which you can tell sail "TTY TELERAY 52".
"Talk shasta,sail,diablo" will open three windows, one to each host.
The Vax systems automagically know you are running talk.

*19 Sep 1981	disk allocations in blocks (tracks)	ME

See PURGE.REG[UP,DOC]/3P for details on the new disk allocation scheme.

*21 Jun 1982	certain SAIL charges reduced	ME

Effective immediately, SAIL user charges for Job-Time used have been
eliminated for two classes of jobs, namely: (1) detached jobs (jobs not
connected to a TTY) and (2) jobs on non-network PTYs.  With this change, the
job-time charges still in effect are now to be thought of as terminal-time
charges (or "connect time" if you will).  Note that (a) CPU-time charges
still apply to both detached jobs and non-network PTY jobs, and (b) users
coming into SAIL over a network (via telnet) still get charged for terminal
time exactly as do local users on directly connected terminals.

As an example of this change, users of PTYJOB or E subjobs (PTY or Lisp)
will not be charged for the job time of the extra job(s).  Of course, use
of two or more jobs on real (or network) terminals will result in
terminal-time charges for each such terminal-job.

The program CHARGE now reports the amount of uncharged job time accumulated
(by detached or non-network PTY jobs), although of course such time does not
increase the user's charges.

*23 Jul 1982	use of TACs	ME
Users of the SU-TAC (formerly SU-TIP) please note:

When you open a connection to a host from the TAC (as in the @OPEN
command), you must now specify the host in the form:
	H/I
where I is the destintation IMP and H is the host number on that IMP (0 to
3).  For example, SU-AI is 0/11, SCORE is 3/11, MIT-AI is 2/6, S1-A is 1/95.

(It turns out that if the Host number on the IMP is zero, then the old way
of giving the host number still works.  E.g., 0/11 is equivalent to 11.)

To figure out the H/I number for a particular host, take the host's octal
host number (available from the HOST program).  If the number has three
digits or less, then the two low-order octal digits are the IMP number I
and the third digit is the Host number H (remember to convert the number I
from octal to decimal, since the TAC wants a decimal number for I).  (If
the number has less than 3 digits, then H is 0.)

If the octal host number has more than 3 digits, then the 3 low-order digits are
the Host number H and the 3 high-order digits are the IMP number I (again in
octal, so remember to convert to decimal before giving the number to the TAC).

The HOST command now types out this new form of Host/IMP numbers.

*5 Aug 1982	PER,ACT files	ME
The files listing department personnel and events are now kept on [PER,ACT]
instead of [PER,CSD].  This includes the USERS.DAT and PEOPLE.DAT files
(maintained at SCORE and copied to SAIL daily) and their merge, FONDLE.DAT.

Other files on [PER,ACT]:
	TODAY.PTY	today's events
	WEEK.PTY	events in the next 7 days
	*.PTY		other department info sorted in various ways

(For a little while, some of these files are duplicated in the old
directory of [PER,CSD], but those versions will shortly disappear.)

*11 Nov 1982	readable backup magtapes	ME

The Dart tapes (P2290 through P2334) that we had thought were
unreadable are actually readable after all, in pretty good shape.
Making a major re-adjustment to the tape drives is what made those
tapes readable now, so there shouldn't be any more trouble reading
those tapes than with any other tapes.  Sorry for the scare.
*13 Sep 1983	new RP07 disks	REG  
We are now using the new RP07 disks as the main file disk.

If anything should go wrong, the old disks still exist and we'd
restore the file system to its state as of 8 AM on Tuesday 13 Sep 83.

The block size on the RP07 is 8 128-word records, compared to the
former 18 128-word records on the Ampex disk.  Disk allocations,
measured in blocks, haven't yet been changed to reflect your increased
allocation of smaller blocks.

Some programs, e.g., COPY, DRD, may report incorrect numbers for the
block count of files.  We're fixing these programs as time permits.

The Ampex UDP2 drive is usable as before.

	Ralph & Martin


*14 Sep 83	DSKSIZ	JJW
DSKSIZ now reports using the new blocksize (8 records instead of 18), and uses a
rate of $.165 per block per month.  CHARGE has also been fixed.  For disk space
used from September 1 to 13, the numbers of blocks have been multiplied by 18/8,
so that multiplying by the new rate will result in the amount that would
otherwise have been calculated.  In general, this is more than the cost to store
the same files now, because the amount of wasted space in files has been
reduced.

*14 Feb 1984	Changes to CKSUM	DON

The CKSUM program has been significantly enhanced.  Most users will want to
take advantage of one or more of the new features.  All users of CKSUM, and
ALL READERS OF BBOARD, should read this message to determine how they are
affected.

The new features are, in order of decreasing significance:
(1) You can get CKSUM to put E's file marks at the start of the new text on
    each page, IF all that's changed on a page is text tacked on the end, plus
    (perhaps) directory line changes, leftover ">" lines from NDBBOARD, and
    white-space changes (such as breaking a long line).  To get this feature,
    turn on the 200 mode bit for a file class.
(2) If the 200 mode bit is set and a page has nothing but merges, you're told
    about it but it's not included in the file marks when you swap to E.  If it
    has merges plus appended text (which might be followed by still more
    merges, which can't be detected), you get placed at the top of the new
    text.  If there are merges but the page that was moved also got modified in
    the middle, you get placed at the top of the moved text (and again, if
    there are still more merged pages later on that page there's no way to
    tell).  See the note below.
(3) If you specify "no E directory" (020 mode bit), then page 1 is checksummed
    like any other page.
(4) Because of (3), it's no longer necessary to have a mode bit that says to
    include a file in E's list whenever the write-date changes, even if no
    changes are detected.  So mode bit 040 has been recycled.  The bit is set
    to zero for all classes when you first run the new CKSUM.
(5) The new meaning of mode 040 is that you NEVER want to edit the file.  This
    is for people who like to checksum non-text files just to keep track of
    when they change.
(6) CKSUM no longer affects the date-last-referenced of the files it checks.

When you first run the new CKSUM, it clobbers the write-dates for all the
files in CKSUM.DAT, so that it will be forced to look at them all and thus
compute the additional checksums needed for the new features.  This will
result in a bunch of "unable to detect any differences" messages, along with
some "changes to page 1" for files with no E directories.  This should happen
only once.  You will also find that your CKSUM.DAT roughly triples in size.

NOTE:  Because of these changes, it's no longer correct to append a remark when
you break a long line or when you do a merge.  The MERGE macro in EINIT[1,3]
has been changed accordingly.

The 200 bit is useful only for files in which changes are normally appended.
Program source files, and documentation (as distinct from documentation UPD
files), don't qualify.  The main advantage of NOT using the 200 bit, for files
where the exact nature of the changes is less likely to be interesting, is that
it keeps the CKSUM report more compact.  That is, even if a page happens to
have only appended changes, CKSUM will simply report it as "changed" unless you
have the 200 bit set.

You might find that you still want to use the 4 bit along with the 200 bit.
That way, if there are appended changes you get placed at the top of the new
text, but if a page is completely new you get placed at the bottom rather than
at the top.  This is more likely to be useful if you tend to use a display with
a 24-line screen:  You can very often figure out, from the bottom of the page,
whether the topic is of interest (and you can also see if there have been any
snide remarks appended yet!), whereas from the top of the page you might see
nothing but a message header.

Note: Naive users who want to take advantage of the new features described in
(1) and (2) above, but don't know what is meant by "the 200 bit" and all that
cruft, should look at CKSUM.DON[UP,DOC], page 6, lines 10-19 (particularly
line 18).

*27 Feb 1984	Dover charges		JJW

CSD-CF began charging for Dover use at the rate of 7 cents per page on January 1
of this year.  The CHARGE program now includes Dover charges in the totals that
it shows.  For now, Dover charges for each month will not be available until
sometime after the end of that month.

*14 May 1984	online dialing prefixes (dial codes) 	ARK

The scenario is familiar: you have been asked to call somebody at
559-1234, but you don't know what town, you don't know the Stanford
Centrex dialing prefix, and there isn't a Stanford Faculty/Staff directory
in sight.  You try dialing 9-599-1234, only to be told by a raspy
recording that "We're sorry, your call cannot be completed as dialed", or
perhaps you get a cartoon version of the opening bars of Beethoven's
Fifth.

Fear not.  There is now an online list of dialing prefixes, and a good
mechanism for looking them up.  In your OPTION.TXT[<prj>,<prg>] file,
(where <prj>,<prg> is your login area), insert a line of the form:
	FIND/X: WITHIN LINE IN EXCH.TXT[P,DOC];

Now, whenever you need to know the dialing prefix for a given exchange,
type (to the monitor):
	OF/X <exch>
where <exch> is the exchange in question.  The FIND program will print out
the dialing prefix, the exchange, and the city.

Questions, comments to ARK.

[This was adapted from CCRMA.]

*28 May 1984	REPLY macro in EINIT.CMD[1,3]	JJW

The REPLY macro in EINIT.CMD[1,3] has been updated to conform to the
current mail protocols (which we have already been using for quite some
time).  The new mail header specification is documented in RFC 822.

Most of the changes are rather minor.  Some parts of the old macro that
are no longer valid have been intentionally left in (i.e., recognition of
"<NAME at HOST>" instead of "<NAME@HOST>" since it still appears in mail
from archaic mailers).  The complete list of changes is:

1. Header continuation lines may start with tabs as well as spaces.

2. "\" quotes the next character in header lines.  Special treatment is
   given only to \", \(, and \) so that their appearance inside comments
   or quoted strings is handled correctly.  (MAIL doesn't correctly parse
   things line "foo\"bar"@hostname in destinations, so don't try to get
   too fancy.)

3. Distribution-list creation is no longer used for long destination
   lists.  By putting MAIL's command line (minus the "MAIL" command) on
   the first line of the message buffer, and then sending it with
   αXMAIL<cr>, any length destination list is allowed.

4. "Remailed-from" and "Remail-to" are now "Resent-from" and "Resent-to"
   everywhere, since this is the new standard.

The following bugs in REPLY are known to exist:

1. REPLY doesn't work for an address of the form "<NAME@SITE>" when NAME
   is a quoted string containing ">".

2. If you write out the page (i.e., by moving to another page) while
   composing the reply message, then REPLY doesn't correctly restore the
   state of the text and the W flag on the page after sending the reply.

If you have any problems with the new REPLY, please send a message to JJW.
The old REPLY macro has been stored in REPLY.OLD[1,3] for the time being.

*30 May 1984	video synthesizer, XGPSYN	ME
The video synthesizer, used by XGPSYN, is no longer available at SAIL.
(It was formerly connected to the Robotics 11/45.)  This means that
XGPSYN can no longer display synthesized text on channel 47 (although
it can still display pieces of the synthesis on channels 30:37).

*2 Sep 1984	New CSD-CF rates	ARK

This was found as a SCORE system message.  It contains the new tentative
rates.  I would assume that the time blocks on SAIL have not changed---
these are the unchanged time blocks for Score.

Arthur
                ---------------

Date: Sun 2 Sep 84 15:30:26-PDT
From: Len Bosack <BOSACK@SU-SCORE.ARPA>
Subject: Tentative rates for University Fiscal Year 1985
To: System@SU-SCORE.ARPA

Subject to revision when the UFY84 closing results are available and subject
to approval by the Controller's office, our tentative UFY85 rates are as
follows. The rates quoted here are toward the high end of the possible ranges.
We should have final rates roughly the third week of September. Additional
information and a consolidated budget have been distributed to all Faculty
members and PI's.

             Sail               Score                   Navajo
Disk Space   $0.169/block-month $0.075/page-month       $0.038/KByte-month
"A" CPU      $1.87 /cpu-minute  $1.50 /cpu-minute       $0.55 /cpu-minute
"A" job time $1.82 /job-hour    $1.50 /job-hour         $1.55 /job-hour
The Time-of-Day blocks are:
              Weekday   Weekend
            +---------+---------+
0000-0800   |    C    |    C    |    "B" time is charged at 2/3 of the "A" rate
            +---------+         +    "C" time is charged at 1/3 of the "A" rate
0800-1300   |    A    |    C    |
            +---------+---------+    No adjustments are made for holidays
1300-1800   |    A    |    B    |
            +---------+---------+
1800-2400   |    B    |    C    |
            +---------+---------+

Each Alto aliquot corresponds to 500 pages of disk storage and will cost $48.75
per month.

PrintServers:
Printer      Rate per Page
Dover        $0.088
Boise        $0.045
-------
-------

ME - The time blocks on SAIL now match those on Score, as shown above.
The only change was to move the old SAIL 9am boundary to 8am.

jmc - Please provide a translation of disk prices into bytes.  Better yet
never mention blocks in the rates.

FY - Charging for the boise?  Is this something new being slid in, or
did I miss an announcement somewhere?

ARK - I have juxtaposed the new charges (found above) with the old charges
(found by running CHARGE and giving it an invalid month).

  September 1, 1983-August 31, 1984
    Job time: $1.60 per hour (no charge for detached and PTY subjobs)
    CPU time:  1.60 per minute
    Disk space: .165 per block per month (1024 words per block)

  September 1, 1984-?
    Job time: $1.82 per hour (no charge for detached and PTY subjobs)
    CPU time:  1.87 per minute
    Disk space: .169 per block per month (1024 words per block)

Time blocks

through August 31, 1984                 from September 1, 1984
            Weekday   Weekend                 Weekday   Weekend
          +---------+---------+             +---------+---------+
0000-0900 |    C    |         |   0000-0800 |    C    |    C    |
          +---------+    C    |             +---------+         +
0900-1300 |    B    |         |   0800-1300 |    A    |    C    |
          +---------+---------+             +---------+---------+
1300-1800 |    A    |    B    |   1300-1800 |    A    |    B    |
          +---------+---------+             +---------+---------+
1800-2400 |    B    |    C    |   1800-2400 |    B    |    C    |
          +---------+---------+             +---------+---------+

    "B" time is charged at 2/3 of the "A" rate
    "C" time is charged at 1/3 of the "A" rate
    No adjustments are made for holidays

Thus, the period 0800-0900 has been changed from C to A, and the period
0900-1300 has been changed from B to A.  Is my interpretation of this
chart correct, or is the chart wrong?
[Not mailed elsewhere.]

ARK - Why do we always get notified of the new charges and plans for charging
for services that were formerly free after the fact.  I don't think it
right to merely post a SCORE system message.  It should also have been
posted at SAIL and Navajo (by some CSD-CF official), and it should be
mailed to each PI by mailing list.  Whatever happened to the CF oversight
committee?  Why wasn't it consulted about these changes?
[Mailed to Bosack.]

∂03-Sep-84  1557	BOSACK@SU-SCORE.ARPA 	Re: About Tentative Rates for University Fiscal Year 1985      
Received: from SU-SCORE.ARPA by SU-AI.ARPA with TCP; 3 Sep 84  15:57:09 PDT
Date: Mon 3 Sep 84 15:55:43-PDT
From: Len Bosack <BOSACK@SU-SCORE.ARPA>
Subject: Re: About Tentative Rates for University Fiscal Year 1985  
To: ARK@SU-AI.ARPA
In-Reply-To: Message from "Arthur Keller <ARK@SU-AI.ARPA>" of Mon 3 Sep 84 15:34:00-PDT

There is, in fact, no flexibility about what is charged for. We have had
a 2 month long dispute with the controller's office on related matters.
We can undertake any sort of activity that the PI's want, but they must
pay the average cost due to providing the service. My alternative to
charging for a service is to cease providing it.

THERE IS NO SUCH THING AS A FREE SERVICE. Repeat that a few times. There
are only costs paid by others. In the case of Navajo, it was announced
well over a year ago that usage-based charges would be instituted. Joe
Oliger decided to pay for another year. He's now decided not to pay anymore.
Guess what that means. As far as Boise goes, I thought everyone understood
that when it was usable in production it would have to be paid for. We paid
for the service, depreciation and supplies while the software was developed.
It's been developed, so it time for it to pay its own way.

-------

drf - Why in the world does the University insist that we pay depreciation
on gift equipment?  The way it stands now, CSD-CF is forced to collect
$100,000 over the years just because HP gave us an expensive printer.
When it finally dies, and someone else gives us another one, we'll all
feel stupid for not having had the use of the $100,000 in the meantime.
Even if nobody feels like giving us a replacement printer, at least we'll
have had some years of service out of the thing.  Is it really Stanford's
position that "if you won't be able to pay for a replacement in ten years,
then you can't accept the gift now" ???

ARK - The depreciation goes into an account of CSD-CF for purchase of more
hardware.  So we actually recover the depreciation cost.  The problem is
that we get charged overhead for the depreciation cost, so if we get a
gift of a $100,000 device, the projects pay $100,000 for depreciation of
the device and $79,000 for overhead charges for the depreciation.  On the
other hand, we could pay the depreciation charges out of the depreciation
fund (which does not have overhead charges), and thereby not collect the
depreciation money nor lose the overhead money.  For something like the
Boise printer this is a reasonable option (or alternatively, the TeX
project can claim that they should get the depreciation charges since it
was a gift to them).  It seems stupid that we have to pay overhead on
depreciation, since we don't have to pay overhead on capital purchases of
contracts.  Seems silly that you don't pay overhead if you buy, but you do
pay overhead if you rent.

Furthermore, outside users of CSD-CF pay 79% overhead, while outside users
of ITS and reprographics pay only 11% (or so) overhead, because they are
service organizations.  This seems like a bug too.

JJW/1-Oct-84 - According to Len Bosack, the rates have been revised since
the above message.  The main difference is that the disk rates have been
slightly lowered.  Here are the new rates:

             Sail               Score                   Navajo
"A" CPU      $1.85 /cpu-minute  $1.65 /cpu-minute       $0.55 /cpu-minute
"A" job time $1.85 /job-hour    $1.55 /job-hour         $1.55 /job-hour
Disk Space   $0.149/block-month $0.073/page-month       $0.038/KByte-month

PrintServers:
Printer      Rate per Page
Dover        $0.087
Boise        $0.045

*30 Jan 1985	Information files	JJW

The nightly processing of CSD and SAIL information files has been changed.
Formerly files called PEOPLE.DAT[PER,ACT] and USERS.DAT[PER,ACT] were
merged into FONDLE.DAT[PER,ACT], and information from this was summarized
in several other files.  Now, USERS.DAT and FONDLE.DAT have gone away;
PEOPLE.DAT remains, and the new file PROGS.DAT[PER,ACT] contains
information used to authorize all SAIL users.  These files are all
maintained at Score (using 1022, a database system); no attempt should be
made to edit them here.

The following improvements have been made.

1. Multiple SAIL accounts owned by a single person are now handled
   correctly in all respects.

2. WHOZAT[P,DOC], the default file used by FIND, now contains information
   about all people in the CSD database, not just SAIL users.  It is still
   possible to FIND a SAIL programmer name PRG by typing "FIND [PRG:".

3. The room listing used by FINGER for MJH offices contains the names of
   all occupants of the office; not just SAIL users.

4. "Happy Birthday" messages typed by LOGIN include non-SAIL users.

The file PHONE.LST[P,DOC] is no longer generated.

*5 Apr 1985	new SPSUB in LIB40	ME
A new version of SPSUB (spooler subroutines) is up in LIB40.  The subroutines
now use new spooler format NP2, with PSPEC (page range) starting at 100 in the
command file.  For details, see SPSUB[SPL,SYS] or contact ME.  The spoolers
will continue to accept the old format command files for a while, but if you
have a program that generates spooler command files, you should update it.

This new version will allow new features to be added to the spoolers in
the near future, features that will need some of the extra command words
this new version provides in the command file.

*16 May 1985	SAIL clock way ahead	ME,JJW
SAIL's downtime on 16 May 85 was due to hardware problems with the system
clock.  At 1am, it advanced the date from 16-May-85 to 1-Jun-85, and at
about 9am, an attempt to fix it caused the date to be set to 16-May-86.
The time part of the clock was basically correct throughout this period.

Most of the damage has been repaired:

1. All files created, written or referenced on 16-May-85 between 01:00
   and 11:30 had the wrong dates stored in the file system, but these
   dates have since been found and corrected.  This includes creation,
   write, and reference dates in files, and login/logout dates in UFDs.

2. The remind phantom processed all one-time reminders and program runs
   that were scheduled to be run by 16-May-86.  You will have to re-enter
   any one-time reminders or program runs that have thus already happened.

   Periodic reminders and program runs, such as those that occur on a
   given day of each month, will have been done up to 16-May-86, but these
   have now been rescheduled to re-occur at the appropriate times.
   However, expiration counts were not corrected, so if you received
   notice that a periodic reminder has expired, you'll have to re-enter it
   if you still want it.

3. Incoming and outgoing mail had a date of 1-Jun-85 or 16-May-86 in the
   headers.  Don't be confused by such dates!  You might want to edit
   your local messages to fix these dates.  All these bad dates should say
   16-May-85 instead.  The times will be correct (at least within an hour.)

4. System accounting data has been cleaned up, with data between 01:00 and
   11:30 discarded (computer use during that period was "free").

5. The News Service saw the advanced dates and deleted all of its old news.
   Only the last 24 to 36 hours worth has been recovered.  Also, many
   people may find that their NS automatic notifications have expired;
   these will have to be re-entered manually by individual users, if
   desired.  Finally, all current notifications (.NAP files) had to be
   flushed (not the requests, just the notifications).

6. Various programs, such as CKSUM, stored the incorrect date in files
   that they created.  Fixing of such dates is generally left up to the
   user.  However, CKSUM itself has been fixed to work even if you ran it
   while the system date was wrong, so you needn't worry about CKSUM.

To help prevent this sort of situation from arising again, the system is
being modified not to allow the date or time to advance by a large amount.

*30 Aug 1985	RP07 filesystem loss	ME,JJW
SAIL suffered a major filesystem catastrophe on Monday, 26 August 1985,
resulting in the loss of all data on its primary file structure.

Thanks to system dumps being done regularly, practically all information
on the disk was recovered.  There was some minor damage to the following
14 directories (not to files on these areas, however):

	[1,DRF]   [1,LG]    [S,WD]    [PUB,LES] [1,BS]
	[EX,VER]  [TEX,JMS] [TMP,LCW] [EXP,VER] [LOT,JMC]
	[F75,JMC] [TAP,TED] [CAL,HE]  [COM,LSP]

The lost information consists of passwords (which have been changed),
times of last login and logout, user and group access bits and privileges,
and default file protection.  The actual files in these directories have
been recovered without problems.

In all directories, there may now appear files that were present in
mid-July at the time of a full save, but were subsequently deleted.  This
is because system dump information did not distinguish between these files
and files that were not dumped in regular dumps by means of the 400
file-protection bit.  If you discover such files on your area, feel free
to delete them.  Sometime in the next few days we will probably have a way
to identify them (except for those in the 14 directories above) and delete
them.

Reference dates and dump information for files recently written may be
somewhat old, since it was recovered from the information at the time those
files were dumped.  This will probably also be fixed soon.

Finally, any files that you created with the 400 file-protection bit after
mid-July will be gone for good, because they were not saved on any tapes.
CKSUM.DAT is such a file for most users, so you will find your CKSUM.DAT
backed up to an old version or gone.

The good news after all this, if that's possible, is that the reconstructed
filesystem contains several improvements that should speed up disk I/O time
noticeably.  These improvements are described below.

Now for a detailed description of the crash and recovery.

The three RP07 disks, which had been indicating errors for several weeks
preceding the crash, on Monday all began to show serious problems.  Just
before midnight, the system was taken down to run diagnostics which
confirmed the problem and located the bad areas on the disks.  But after
the diagnostics had been run, the disks were even worse and it was not
possible to run the system.

On Tuesday, further tests were done and during these one of the three disk
units failed completely.  It has been replaced with a spare RP07 drive.
The other two units showed a large number of errors and were reformatted,
which fixed most of the bad spots on them.

The loss of one drive and the reformatting of the other two required that
all the data on the disks be lost.  Fortunately, filesystem dumps were
done on a regular schedule and the latest dump tape was written about 10
minutes before the crash.  Also, moments before the system was taken down,
a tape containing all directory information, which is normally not saved
in system dumps, was made.  This includes passwords and other directory
information, which would otherwise have been lost.

Using the Ampex disk drives and a disk pack containing an old but usable
version of the operating system, an up-to-date version of the system was
created, that treated the Ampex as the primary disk and the RP07s as an
auxiliary device.

Reconstruction of the RP07 filesystem began on Wednesday.  Because this
had never been done before, it required writing some new programs and
modifying existing ones.  (The initial RP07 filesystem created in
September 1983 was copied from the six Ampex disks then in use as the
main filesystem, but that procedure was not applicable to the problem
of constructing a filesystem from dump tapes.)

The reconstruction had several phases.  First, an empty file structure was
created on the disks.  Next, all the directories present at the time of
the crash were recreated.  Finally, the latest available copy of each file
was read from system dump tapes.

The list of files to be restored from each tape was ready by Thursday
afternoon, and after one false start the tapes began to be read at about
5:30 p.m.  A total of 48 tapes were read, seven on the old 7-track drives
and 41 on the new 9-track drive.  Most of the files were on a set of six
of these tapes that contained a full dump of all files in the system, made
during the period July 12-18.  Files that were modified after those dates
were read from later dump tapes.

Reading of the tapes continued until Friday morning.  Altogether 42471
files and 1776 UFDs were brought back and only a small number of errors
were encountered.

This is only the second major disaster ever to affect the SAIL primary
filesystem.  The previous one, on 23 December 1980, was a head crash on
one of the six Ampex disk packs that kept the system down for eight days.

The improvements made to the filesystem, mentioned above, consist of
rearranging the location of the most frequently referenced directories, so
that they are on separate disk drives, and altering the assignment of
blocks to new files (or to files being extended) so that sequential
reading of blocks is made faster.  This should result in a noticeable
improvement in operations such as search operations in large files,
directory searches, and loading programs into memory.

*7 Oct 1985	New CSD-CF rates	JJW

Date: Sun 6 Oct 85 21:12:52-PDT
From: Len Bosack <BOSACK@SU-SCORE.ARPA>
Subject: Tentative rates for the first part of UFY86

System	ACPU	AConnect	Disk
Sail	1.85	1.85		.13
Score	1.67	1.66		.07
Navajo	.38	1.4		.029

The Altos will go for $35/aq

Printer		PerPage
Dover		.059
Imagen/Apple	.065
Boise		.044

These are the 'class' rates: Dover, Rover, Plover all the same; all the Imagen/
Apple printers the same....

-------

[JJW - SAIL's CPU and connect rates have stayed the same; other rates have
 all gone down.]

*22 Oct 1985	another RP07 filesystem loss	ME,JJW

At about 5pm on Wednesday, 16 Oct 85, one of SAIL's RP07 disks crashed,
destroying the file system.  There had been a backup dump done at 10pm the
previous evening, so in general no more than those 19 hours of file
changes have been lost.  The file system has been restored to its state as
of about 10pm on Tuesday, 15 Oct 85, except that most mail files on [2,2]
were restored to their absolute latest states as of the moment of the
crash.  (A few users will have been notified that they lost some recent
mail.  No effort was made to retain MSG.MSG files (protected mail files on
private areas) in their latest states, so they will have gone back to the
previous night's dumped version like most files.)

Files CREATED after the last dump (10pm Tues) and before the crash (5pm
Wed) will have disappeared (since they were never dumped) except for some
retrieved mail files.  Files with the dump-never bit, such as CKSUM.DAT
and most .REL files, will have been restored to their state as of the last
full dump (about 19 Sep 85).

On the other hand, files with the dump-never bit on, such as .REL files,
that you deleted between 19 Sep 85 and 15 Oct 85 will have re-appeared.
You might check to see if you want to delete any such files of yours.

A number of directories were unreadable after the crash, and their
passwords and other UFD information (last login and logout time, access
bits, and privileges) have been restored to their state as of 26 August
1985.  The directories to which this has been done are the following
(other directories have the correct latest info):

	[104,10X] [  1,CXF] [BW1,GFS] [  1,JPS] [BKG,PHY] [  1,TMM]
	[  1,ARK] [PAP,DCL] [DW1,GFS] [  3,JSV] [LET,PJH] [ARP,TOB]
	[BUR,ARK] [  S,DOC] [DOC, GG] [ M1, KC] [SAI,RAS] [  1,TRB]
	[TMP,ARK] [LEP,EJS] [DIS,IAM] [ SL, ME] [  1,RPH] [  1,TRD]
	[TUG,ARK] [CMP,EPF] [LSP,IAM] [  1,MJB] [PAP,SJW] [  1, TS]
	[ SP,BOB] [  1,FTL] [ MF,JDH] [THE, ML] [  1,SMI] [SAM,TVR]
	[DOC,BPM] [ADA,FWH] [  1,JLG] [116,NWD] [  P,SYS] [INT, YM]
	[206,CCG] [ PL, FY] [  1,JMC] [SYS,PAM] [ F2,SYS] [TMP, ZM]
	[DOC,CLT] [LST, FY] [  1,JMM] [SRV, PB] [ RH,SYS] [PAT,ZZZ]
	[SEU,CLT] [SQU, FY] [SND,JMS] [  1,PDQ] [MAI,SYS]

The long duration of the downtime was mainly because: there was no spare
RP07 drive this time, attempts to utilize parts of the damaged drives
failed although such attempts appeared promising at first, and replacement
parts were not available from DEC.  On Monday we got a spare drive from
LOTS, and we're now using it in place of the drive that crashed.

A side note: The backup UDP pack WAITS0, which is used to boot the system
in case of a complete failure of the RP07 system, itself crashed when it
was put into service, leaving us within a few microns of having no way to
boot WAITS to begin restoring things.  A couple of new such packs have
since been made.

*8 Nov 1985	yet another RP07 filesystem loss	ME,JJW

The third of SAIL's three original RP07 drives failed at around 6pm on
Thursday, 7 Nov 85.  Files have been restored from dump tapes up to the
time of the last dump, which was on Wednesday evening.  Most mail files on
[2,2] were restored to their state just before the crash, except for a few
that were unreadable.

Files CREATED after the last dump (10pm Wed) and before the crash (6pm
Thurs) will have disappeared (since they were never dumped) except for
some retrieved mail files.  Files with the dump-never bit, such as
CKSUM.DAT and most .REL files, will have been restored to their state as
of the last full dump (about 1 Nov 85).

On the other hand, files with the dump-never bit on, such as .REL files,
that you deleted between 1 Nov 85 and 6 Nov 85 will have re-appeared.
You might check to see if you want to delete any such files of yours.

*6 Dec 1985	PUB can now make Press files	ME,JLG
PUB can now generate Press files for printing on the Dover.

This is an experimental version and the only Dover fonts
available are those listed in Fonts.Widths (see the recent
handout from the receptionist of Dover fonts -- the fonts
available to PUB are those listed on the first page).  No
MetaFont fonts are usable.

Say "DEVICE PRE" in your PUB file to get Press output; say
"FONT 1 TimesRoman10b", for example, to get 10-point bold
TimesRoman as font 1.  (Letter case doesn't matter.)

Please report problems via GRIPE PUB (or send mail to BUG-PUB).
*25 Mar 1986	yet another new RP07 filesystem loss	ME,JJW

The fourth of SAIL's three original RP07 drives failed when the power came
up after the weekend power outage (for the power transformer replacement),
at around 8pm on Sunday, 23 Mar 86.  Files have been restored from dump
tapes up to the time of the last dump, which was on Friday evening about 8
hours before the power was turned off.  Most mail files on [2,2] were
restored to their state just before the crash, except for a few that were
unreadable.

Files CREATED after the last dump (11pm Fri) and before the power shutdown
(8am Sat) will have disappeared (since they were never dumped) except for
some retrieved mail files.  Files with the dump-never bit, such as
CKSUM.DAT and most .REL files, will have been restored to their state as
of the last full dump (about 20 Mar 86).

On the other hand, files with the dump-never bit on, such as .REL files,
that you deleted between 18 Mar 86 and 22 Mar 86 will have re-appeared.
You might check to see if you want to delete any such files of yours.

*6 May 1986	Network host names	ME,JJW

Programs that accept host names (mainly TELNET, FTP and MAIL) now use a
slightly different algorithm to resolve partially specified names.  Names
that match an initial substring of only one host will continue to be allowed
as abbreviations for that host name for the time being.  If a name matches
more than one host, it will be considered ambiguous unless one of the
following conditions is true:

1. Only one of the matched names is a server host.
2. Only one of the matched names has a "." following the abbreviation.
3. Only one of the matched names has ".Stanford.EDU" following the
   abbreviation.

Rule (1) has always been in effect.  Rule (2) allows an abbreviation like
"SAIL" to match "SAIL.Stanford.EDU", even though there is another host
named "SAILOR.MIT.EDU".  Rule (3) allow an abbreviation such as "Sushi" to
match "Sushi.Stanford.EDU", even though there is another host named
"Sushi.NOSC.MIL".  However, some substrings that used to be ambiguous no
longer are; for example "Sc" now matches "SC.CS.CMU.EDU" by rule (2) even
though it is a prefix of "Score.Stanford.EDU" and many other host names.

The reason for this change is that we want to remove excess nicknames from
the host table, which is growing very large, and still be able to use these
nicknames if they are a prefix of the host's domain name.  Some nicknames
(like "CMUA") may disappear, however, if they are not a prefix of a host's
official name.  Therefore, if you maintain mailing lists you should
convert all nicknames of hosts to official names.  The program DISFIX will
do this automatically; type HELP DISFIX for more information.

Further changes to host names will be coming in the next few months as we
become part of the domain system.  Watch this space for announcements.

JJW (16-May-86) - Many nicknames have been put back, due to problems with
the above scheme.  The only nicknames now gone from the table are those
that are a prefix of the official name, if the character following that
prefix is ".".  Such nicknames will be recognized by the above algorithm
anyway.  Names such as "CMUA" are thus accepted, though we discourage
their use since they may not be accepted forever.

*12 Aug 1986	Bulletin board files	ME
Several bulletin board files have been moved from [2,2] to [BB,DOC].  They
include: RECIPE.TXT, MAC.TXT, PARSYM.TXT, PHDPRO.TXT, AI.TXT, STAFF.TXT,
THEORY.TXT, and PHONES.TXT (now FONES.TXT).  If you read any of these with
CKSUM, you should give a command like that below for each such moved file
that you read:

	R CKSUM;mac.txt[bb,doc]←mac.txt[2,2]

The bulletin board file for discussion of the Stanford phone system is
FONES.TXT[BB,DOC] to avoid conflicting with PHONES[3,2] (a list of dial-up
phone numbers).  The READ command can be used to find any of these files
if you just know the primary name (e.g., READ RECIPE<cr>).  Also, the
command DIRECTORY [BB,DOC] will list all the bulletin board files.

*11 Nov 1986	Bulletin board purging	RTC
There is now a more automatic method for deleting old pages from the
bboard.  The bboards will be updated weekly using a program, BBTRIM,
which will soon be run overnight.

The most obvious changes are:

- There will be no more bboard purge warning pages.  You can use the
BBWARN program to list headers of pages to be deleted.  This program
should be self-explanatory.  You just need to know that messages are
kept for 14 days on all bboards, except for JOBS.TXT[BB,DOC], where
they are kept for 30 days.  (The default date given for the date of
next purge is seven days from the current date.)

- BBTRIM looks at all messages on the page when it works out how old a
page is.  So there is no need to use the NDBBOARD command when merging
messages.  On the other hand, BBTRIM does understand the header lines
generated by NDBBOARD, and it will act as if the page has been updated
on the date the command was given.  This gives an easy way to delay a
page's deletion.

- BBTRIM includes a couple of hacks to have pages retained longer or
deleted earlier than usual.  For details ask me (RTC@SAIL), or look at
the first few pages in EVENTS.TXT[BB,DOC].  Also, messages with subject
beginning "EVENTS FOR " or "EVENTS FOR THE WEEK " expire as soon as
reasonable.  BBWARN knows all about this.

*27 Nov 1986	WAITS/ASCII character translation	JJW
Programs that translate characters from the WAITS character set to standard
ASCII or vice versa have been changed to translate the underscore character
in a way that is better for most applications.  They will now interchange
WAITS underscore (character code 030) with ASCII underscore (character code
137), and similarly interchange WAITS left-arrow (137) with extended-ASCII
left-arrow (030).  "Extended ASCII" is the character set used at MIT and by
TeX and related programs; it is a superset of the standard ASCII character
set and has the left-arrow character in position 030.

The following programs have been changed:

FTP (user and server): ASCII mode now does the underscore translation.  TEXT
    mode, which used to do this, is no longer provided.  SAIL mode has been
    added for transferring programs written in SAIL, FAIL and other
    languages, for which the compilers on non-WAITS systems expect the old
    character translation.  SAIL mode should also be used to retrieve files
    that were stored with ASCII mode prior to this change.

PUPFTP (user and server): TEXT mode now does the underscore translation.
    MIT mode, which used to do it, is no longer provided.  SAIL mode has
    been added as in FTP.

MAIL (user and server): The underscore translation is now always done.

TELNET, DTN and DIAL: The underscore translation is now done.  This may or
    may not have the right effect, depending on your terminal type.  Data
    disk and DMWAITS terminals will now display underscore correctly when
    talking to a remote host that uses standard ASCII.

SUPDUP: This program has already been doing the underscore translation, so
    has not been changed.

FINGER (user and server): has been changed.


CCRMA has also made these changes, so file transfer and mail to and from
there should work as before.  There may still be problems with Telnet until
everything is straightened out.